a = vector(1000, n, oo) maxk = 13 explore(v, k) = { if (v<=#a, a[v] = min(a[v], k); ); if (k++<=maxk, my (d=digits(v)); for (i=1, #d, if (d[i], for (j=i, #d, my (s=fromdigits(d[i..j])); explore(fromdigits(concat([d[1..i-1], digits(2*s), d[j+1..#d]])), k); if (s%3==1, my (z=(s-1)/3); if (z%2, explore(fromdigits(concat([d[1..i-1], digits(z), d[j+1..#d]])), k); ); ); ); ); ); ); } { explore(1, 0); for (n=1, #a, if (a[n]==oo, break, print (n " " a[n]); ); ); } quit