lst = {}; int[n_] := IntegerDigits[n]; n = 0; Do[While[True, s = Length@int[n]; r = PadRight[int[n], 2*s, Reverse@int[n]]; If[s > 1, r = Drop[r, {s}]]; p = k = FromDigits[r]; c = 0; While[k > 9, k = Times @@ int[k]; c++]; If[c == l, Break[]]; n++]; AppendTo[lst, p], {l, 0, 10}]; lst (*
Arkadiusz Wesolowski, Jul 05 2012 *)