Source: https://www.cs.ucdavis.edu/~rogaway/classes/120/spring13/eric-dfa.pdf