Не надейтесь на красоту, т.к. алгоритм этот я делал для интереса в одной игрушке(на скриптах писал), а потом попробовал на Delphi проверить какая будет разница в скорости...
Алгоритм этот последовательно перебирает все возможные варианты, т.е. вот так примерно:
Код:
aaaa
aaab
aaac
.....
aaaZ
aaba