Introduction to automata theory, languages, and computation - international edition, 2nd Edition