Theory of computation : minimization of DFA