I played a lot with your solution to understand it well, so first of all - thank you, choroba.
Just my two cents: your function frequencies_form_a_sequence assumes that the frequencies start with one. The words with letter sequencies 2,3,4 etc. will not be selected then.
Should it not be in the following form (min, max and all are from List::Util and List::MoreUtils):
sub frequencies_form_a_sequence
{
my ($r) = @_;
my $min = min keys %$r;
return 0 if $min == 1; # Just for test.
my $max = max keys %$r;
return 0 if $min == $max; # Probably not a sequence.
my $bool = all { defined $r->{$_} } $min .. $max;
}
I find the following words then (cannot pretend to know what they mean though :) ):
addda
ajaja
alala
anana
arara
cocco
essee
esses
igigi
nanna
pappa
peepe
reree
susus
taata
tatta
ululu
xxiii
deedeed
sasararas
sassarara