This program assumes the following EP strategy: apply adj-adj to try to reduce the number of unsolved or opposite edges on each face at once, until you get to a case you know, and then solve that case directly. It computes all possible EP situations to determine the most common cases you will encounter but be unable to solve immediately.
Note: When you could reduce a case to either U, it will choose the clockwise one for simplicity.