$| = 1; for (100..999) { next if /(.)\1\1/; print "$_ : ", k($_), $/; } #### sub k { $_=sprintf"%03d",pop;/495/?0:1+k(-($_=join'',sort/./g)+reverse) }