#include #include #include #include using namespace std; using P = pair; int main() { cin.tie(0); ios::sync_with_stdio(false); int R, C; cin >> R >> C; int sy, sx; cin >> sy >> sx; sy--; sx--; int gy, gx; cin >> gy >> gx; gy--; gx--; vector c(R); for (int i = 0; i < R; i++) cin >> c[i]; vector> d(R, vector(C, -1)); vector

dxdy = {P(0, -1), P(-1, 0), P(1, 0), P(0, 1)}; queue

que; d[sy][sx] = 0; que.push(P(sy, sx)); while (!que.empty()) { P p = que.front(); que.pop(); for (int i = 0; i < 4; i++) { int y = p.first + dxdy[i].first; int x = p.second + dxdy[i].second; if (y < 0 || x < 0 || y >= R || x >= C) continue; if (c[y][x] == '#' || d[y][x] >= 0) continue; d[y][x] = d[p.first][p.second] + 1; que.push(P(y, x)); } } cout << d[gy][gx] << "\n"; }