deterministic finite automata (dfa)