#include <bits/stdc++.h>
using namespace std;
int X[4] = {-1, 1, 0, 0};
int Y[4] = {0, 0, 1, -1};
int n, m;
vector<vector<int>> a, vis;
queue< pair<int, int> > q;
int main() {
cin >> m >> n;
a.resize(m);
vis.resize(m);
for (int i = 0; i < m; i++) {
a[i].resize(n);
vis[i].resize(n, -1);
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
int s, t, u, v;
cin >> s >> t;
cin >> u >> v;
s = m - s - 1;
u = m - u - 1;
// đỉnh đầu tiên được thăm là s, t
// đẩy {s, t} vào queue
vis[s][t] = 0;
q.push({s, t});
// kiểm tra q chưa rỗng và đỉnh {u, v} chưa được thăm
while (!q.empty() && vis[u][v] == -1) {
// lấy đỉnh đầu tiên trong queue ra
pair<int, int> top = q.front();
q.pop();
for (int i = 0; i < 4; i++) {
// thăm các đỉnh kề với đỉnh đã lấy ra
int x = top.first + X[i];
int y = top.second + Y[i];
// nếu (x, y) nằm trong bảng, và (x, y) là ô đi được, (x, y) chưa được thăm
// thì đẩy (x, y) vào queue
if (x >= 0 && y >= 0 && x < m && y < n && vis[x][y] == -1 && a[x][y]) {
q.push({x, y});
vis[x][y] = vis[top.first][top.second] + 1;
}
}
}
// thứ tự thăm của {u, v}, nếu {u, v} ko được thăm thì bằng -1
cout << vis[u][v];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgWFs0XSA9IHstMSwgMSwgMCwgMH07CmludCBZWzRdID0gezAsIDAsIDEsIC0xfTsKCmludCBuLCBtOwp2ZWN0b3I8dmVjdG9yPGludD4+IGEsIHZpczsKcXVldWU8IHBhaXI8aW50LCBpbnQ+ID4gcTsKCmludCBtYWluKCkgewogICAgY2luID4+IG0gPj4gbjsKICAgIGEucmVzaXplKG0pOwogICAgdmlzLnJlc2l6ZShtKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgYVtpXS5yZXNpemUobik7CiAgICAgICAgdmlzW2ldLnJlc2l6ZShuLCAtMSk7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuOyBqKyspIHsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgfQogICAgfQoKICAgIGludCBzLCB0LCB1LCB2OwoKICAgIGNpbiA+PiBzID4+IHQ7CiAgICBjaW4gPj4gdSA+PiB2OwoKICAgIHMgPSBtIC0gcyAtIDE7CiAgICB1ID0gbSAtIHUgLSAxOwoKICAgIC8vIMSR4buJbmggxJHhuqd1IHRpw6puIMSRxrDhu6NjIHRoxINtIGzDoCBzLCB0CiAgICAvLyDEkeG6qXkge3MsIHR9IHbDoG8gcXVldWUKICAgIHZpc1tzXVt0XSA9IDA7CiAgICBxLnB1c2goe3MsIHR9KTsKCgkvLyBraeG7g20gdHJhIHEgY2jGsGEgcuG7l25nIHbDoCDEkeG7iW5oIHt1LCB2fSBjaMawYSDEkcaw4bujYyB0aMSDbQogICAgd2hpbGUgKCFxLmVtcHR5KCkgJiYgdmlzW3VdW3ZdID09IC0xKSB7CgkJLy8gbOG6pXkgxJHhu4luaCDEkeG6p3UgdGnDqm4gdHJvbmcgcXVldWUgcmEKICAgICAgICBwYWlyPGludCwgaW50PiB0b3AgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewoJCQkvLyB0aMSDbSBjw6FjIMSR4buJbmgga+G7gSB24bubaSDEkeG7iW5oIMSRw6MgbOG6pXkgcmEKICAgICAgICAgICAgaW50IHggPSB0b3AuZmlyc3QgKyBYW2ldOwogICAgICAgICAgICBpbnQgeSA9IHRvcC5zZWNvbmQgKyBZW2ldOwoKCQkJLy8gbuG6v3UgKHgsIHkpIG7hurFtIHRyb25nIGLhuqNuZywgdsOgICh4LCB5KSBsw6Agw7QgxJFpIMSRxrDhu6NjLCAoeCwgeSkgY2jGsGEgxJHGsOG7o2MgdGjEg20KCQkJLy8gdGjDrCDEkeG6qXkgKHgsIHkpIHbDoG8gcXVldWUKICAgICAgICAgICAgaWYgKHggPj0gMCAmJiB5ID49IDAgJiYgeCA8IG0gJiYgeSA8IG4gJiYgdmlzW3hdW3ldID09IC0xICYmIGFbeF1beV0pIHsKICAgICAgICAgICAgICAgIHEucHVzaCh7eCwgeX0pOwogICAgICAgICAgICAgICAgdmlzW3hdW3ldID0gdmlzW3RvcC5maXJzdF1bdG9wLnNlY29uZF0gKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCS8vIHRo4bupIHThu7EgdGjEg20gY+G7p2Ege3UsIHZ9LCBu4bq/dSB7dSwgdn0ga28gxJHGsOG7o2MgdGjEg20gdGjDrCBi4bqxbmcgLTEKICAgIGNvdXQgPDwgdmlzW3VdW3ZdOwoKICAgIHJldHVybiAwOwp9Cg==