The BFS algorithm find the shortest path from start to finish with a sliding surface.
The AStar algorithm finds the shortest path without a sliding surface.
The AStar with sliding surface is also implemented but not yet completed. Hoping to work on it on a free time.