#!/usr/bin/env python3 P=[[1,0,0,1,0,1],[0,0,0,1,0,0],[0,0,1,0,1,0],[0,1,1,1,1,1],[0,0,0,1,1,1],[0,1,0,0,1,0]] p=[0,1,2,4,5,6] f=[3,7,8,9,10,11] G=[] for r in range(6): row=1<<(11-p[r]) for j in range(6): if P[r][j]: row^=1<<(11-f[j]) G.append(row) H=[] for r in range(6): mask=0 for j in range(6): if P[j][r]: mask^=1<<(11-j) mask^=1<<(11-(6+r)) H.append(mask) C=[] for u in range(64): c=0 for r in range(6): if u>>r&1: c^=G[r] C.append(c) rep=[0]*64 mw=[13]*64 for v in range(4096): s=0 for r in range(6): par=bin(v&H[r]).count('1')&1 s=s*2^par w=bin(v).count('1') if w