#!/usr/bin/env python3 from itertools import permutations as P B={1:{2,5,8,9},2:{5,7,8},4:{1,2,5,7},5:{7,11},6:{1,2,4,5,8},7:{1,6,8},8:{4,5,9},9:{2,4,5,6,7},11:{1,2,4,6,7,8,9}} def w(a,u): return a if a==u else (10 if u==10 else u) if a==10 else (a if u==10 else (a if u in B.get(a,()) else u)) C=[[w(a,u) for a in range(1,12)] for u in range(1,12)] I=[1,2,10,4,5,6,7,8,9,10,11] D={} S={} for p in P(range(1,10)): v=I for x in reversed(p): u=v[x-1] v=[C[u-1][a-1] for a in v] o=w(v[9],v[10]) D[o]=D.get(o,0)+1 if o not in S:S[o]=p print(D) print(S)