use Algorithm::Permute; say join ",",search(reverse (1..14)); sub search { my $p = new Algorithm::Permute(\@_); while (my @a = $p->prev) { return @a if copasetic(@a); } }