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). 
Under which cases does `ret` not equal 0? I thought you were filtering out linearly dependent rows above.