Introduction to automata theory, languages, and computation - Hopcroft, John E.; Ullman, Jeffrey D.