#include #include #include using namespace std; const int inf = 987654321; int gr, gc; int R, C; vector G; vector>> seen; const vector> dr = {{2, 2, 1, 1, -1, -1, -2, -2}, {1, 1, -1, -1}}, dc = {{1, -1, 2, -2, 2, -2, 1, -1}, {1, -1, 1, -1}}; int nya(queue> que) { while(!que.empty()) { int r, c, cnt; bool is_bishop; tie(r, c, is_bishop, cnt) = que.front(); que.pop(); if(seen[is_bishop][r][c]) { continue; } seen[is_bishop][r][c] = true; if(r == gr && c == gc) { return cnt; } for(int i=0, n=dr[is_bishop].size(); i> R >> C; G.assign(R, ""); for(int r=0; r> G[r]; } int sr, sc; for(int r=0; r>(R, vector(C, false))); queue> que; que.emplace(sr, sc, false, 0); int res = nya(que); if(res == inf) { res = -1; } cout << res << '\n'; return 0; }