def unrank(S, k, i):
    n = len(S)
nb = factorial(n) // factorial(n - k)
if i >= nb:
    raise IndexError
res = []
while k > 0:
    nb = nb // n
pos = i // nb
i = i % nb
res.append(S[pos])
del S[pos]
k = k - 1
n = n - 1
return res
Вычисление перестановки n-го из 6 символов алфавита