T(n,k,{base=2}) = { my (ln = #digits(n, base), lk = #digits(k, base)); if (\\ n == k ? ln == lk, if (n==k, return (n)), \\ k in n ? ln > lk, for (o=0, ln-lk, if ((n \ (base^o)) % (base^lk) == k, return (n)) ), \\ n in k ? for (o=0, lk-ln, if ((k \ (base^o)) % (base^ln) == n, return (k)) )); \\ overlap ? forstep (c=min(ln, lk), 1, -1, my (b=oo); if (n % (base^c) == k \ (base^(lk-c)), b = n * (base^(lk-c)) + k % (base^(lk-c)); ); if (k % (base^c) == n \ (base^(ln-c)), b = min(b, k * (base^(ln-c)) + n % (base^(ln-c))); ); if (b < oo, return (b); ); ); \\ n|k or k|n return (min(n * base^lk + k, k * base^ln + n)); }