Clock optimal solver

As there're only 18 possible moves in WCA notation (instead of all 30 moves of the clock puzzle), we can easily solve the clock by brute-force search + Gaussian Elimination.
The average solution length of the optimal solver is about 10.8 moves, which is 2 moves less than randomly generated moves (14 * (1 - 1/12) = 12.83). 
I see above that in the one place where you call solution, you don't check its return value. This is the problem with error codes, people are always too lazy to check them. Please throw an exception or assert(false) here instead.