Still gets hung in a loop...

Try shuffle on first_possible_move instead of reverse