by one square from our current location. If any of those moves it valid, it makes the move, and makes a recursive call to calculate the next move to make. If the recursive call backtracks, it tries a different move. If there are no more legal moves from the current location, it returns false to tell the previous call that it needs to make a different decision for its move. The algorithm finishes when we either reach the finish square or exhaust all possible options.