#!/usr/local/bin/python3 from itertools import permutations as P,combinations as Q from collections import defaultdict as D W=sorted(set(P('0011223'))) def f(w,u): s=0 for I in Q(range(7),len(u)): if all(w[I[j]]==u[j] for j in range(len(u))):s+=1 return s def S(w):return tuple(f(w,u) for u in ('01','12','23','012','123','0123')) G=D(list) for w in W:G[S(w)].append(w) L=list(G.values()) idx={w:k for k,x in enumerate(L) for w in x} def rv(w):return tuple(reversed(w)) ex={} br={} for k,x in enumerate(L): R={rv(w) for w in x} ks={idx[z] for z in R} if len(ks)==1: j=list(ks)[0] br[k]=j if len(L[j])==len(R):ex[k]=j print('Mex',len(ex),'fix',sum(k==v for k,v in ex.items()),'Mbr',len(br),'fixbr',sum(k==v for k,v in br.items())) print('brnotext',[(k,v,len(L[k]),len(L[v])) for k,v in br.items() if k not in ex]) print('notbr',[(k,len(L[k]),len({idx[rv(w)] for w in x})) for k,x in enumerate(L) if k not in br])