Formal Languages & Automata Theory