base = 10 same(x,y) = { while (x!=y, if (x\base==y\base, return (1); \\ differ in one digit ); if (x%base==(y\base)%base && (x\base)%base==y%base && x\base^2==y\base^2, return (1); \\ the same after swapping adjacent digits ); if (x%base!=y%base, return (0); ); x\=base; y\=base; ); return (1) } a = vector(10 000) { n = 0; for (v=0, oo, ok = 1; forstep (k=n, 1, -1, if (same(a[k], v), ok = 0; break; ); ); if (ok, print (n++ " " a[n]=v); if (n==#a, break); ); ); } quit