my @letters = qw(d u n s c a e y t); open(D,"/usr/share/dict/words") or die $!; print f(@letters); sub f { # 1 2 3 4 5 #234567890123456789012345678901234567890123456789012345 my%h;$h{$_}++for@_;my@b;push @{$b[length]},$_ for grep{ # 6 7 8 9 0 1 #78901234567890123456789012345678901234567890123456789012 my%g=%h;$g{$_}--for/./g;!grep{$_<0}values%g};@{$b[-1]} }