from collections import Counter def next_step(s): return ''.join(str(v) + k for k, v in sorted(Counter(s).items(), reverse=True)) s = '1' print s for _ in xrange(20): s = next_step(s) print s
Standard input is empty
1 11 21 1211 1231 131221 132231 232221 134211 14131231 14231241 24132231 14233221 14233221 14233221 14233221 14233221 14233221 14233221 14233221 14233221