i suspect that from your trivial solution we can arrive at the final solution by just performing a DFA minimization. the same thing that lex and yacc do when they generate code. so i guess i have answered my own question. thanks for helping me. your trivial solution just made my brain work. konstantin