addd(n) = apply(d -> n+d, select(sign, Set(digits(n)))) A241181(n) = { my (s=[n]); for (v=0, oo, for (k=1, #s, if (isprime(s[k]), return (v); ); ); s = Set(concat(apply(addd, s))); ); } \\ A336382 (n>0) a = [0] \\ circular buffer buffer = vector(9) set(n,v) = { buffer[1+n%#buffer] = v; if (v, while (v>#a, a = concat(a, vector(#a)); ); a[v] = n; ); } get(n) = buffer[1+n%#buffer] \\ initialize high values M = 500 000 000 for (n=M+1, M+9, set(n, A241181(n))) \\ search backwards { forstep (n=M, 1, -1, if (isprime(n), set(n, 0), v = oo; d = select(sign, digits(n)); for (k=1, #d, v = min(v, 1+get(n+d[k])); ); set(n, v); ); ); } \\ display result print (0" "prime(1)) for (n=1, #a, if (a[n], print (n " " a[n]), break)) quit