my $text="qwertyuiopasdfghjklzxcvbnm"; my @ltrs=split //,$text; my ($val,@set,@unset)=(1); while ($val) { push @{(ord($_) & $val) ? \@set : \@unset}, $_ foreach @ltrs; $val <<= 1; @ltrs=( splice( @unset, 0, @unset ), splice( @set, 0, @set ) ); } print join("-",@ltrs)."\n"