Solutions to Introduction to the Theory of Computation