Source: https://cs.brown.edu/courses/csci1010/files/doc/fall2020/Lecture-2-NFA.pdf