You don't need any special algorithm for this task, only a breadth-first search in a graph. Consider points that are reachable in 1 step as the first level of your graph, points thats are reachable in 2 steps(those ones are connected to any of the first level points, but not to the source point) as the second level, etc.
First visit the points which are directly reachable from the source point, then visit the second-level points, then visit the third-level points. You can achieve this by storing the nodes in a list. First you visit the source, and push the neighbouring nodes to the end of your list. Then you visit each node in your list, and push their neighbouring nodes to the end of the list, if they are not in the list so far. Once you reach the target node, you are done. You can store the level of each node, and also, you can store the preceding node, so you can find the path backwards from the target node.
One important thing to note: don't add obstacles to your list, this way there will be no routes crossing that point.