JavaScript (ES6), 121 bytes
Expects (N,n,o) and returns 0 for regular, 1 for strange, 3 for wrong.
(N,n,o)=>(g=(m,x="a",y="b",i)=>i^N?g(m,~i+n?y:y=p=y.toUpperCase(),x+y,-~i):!x.slice(o).match(eval(`/^${p}/`+m)))``|g`i`*2
Arnauld
- 205.5k
- 21
- 187
- 670