>処理の途中で、フラグがついてるマスに当たったら処理を止めて
処理の分岐点まで戻る
(その際、既にあるフラグと
 今考えているフラグのどちらが短い歩数かを比べる)

それは最短経路アルゴリズム
A*ではないか?