(PARI) isok(i, n) = {for (b = 2, n, if (Set(digits(i, b))[1] && #Set(digits(i, b)) != b - 1, return (0)); if (Set(digits(i, b))[1] == 0 && #Set(digits(i, b)) != b, return(0)); ); return (1)}
a(n) = {i = n^(n-2); while (! isok(i, n), i++); i; }
(Python)
from itertools import count, product
from sympy.utilities.iterables import multiset_permutations
from gmpy2 import digits, mpz
if n == 2:
return 1
dlist = tuple(digits(d, n) for d in range(n))
for l in count(n-2):
for d in range(1, n):
c = None
for t in product(dlist, repeat=l-n+2):
for u in multiset_permutations(sorted(t+dlist[1:d]+dlist[d+1:])):
m = mpz(''.join((dlist[d], )+tuple(u)), n)
for b in range(n-1, 1, -1):
if len(set(digits(m, b))|{'0'}) < b:
break
else:
if c != None:
c = min(m, c)
else:
c = m
if c != None: