#include <bits/stdc++.h>
using namespace std;
const int maxn = 1001;
typedef pair<int, int> ii;
const int dx[8] = {1, 2, 2, 1, -1, -2, -2, -1};
const int dy[8] = {2, 1, -1, -2, -2, -1, 1, 2};
int n, s, t, u, v;
int a[maxn][maxn];
int path[maxn][maxn];
void inp() {
cin >> n >> s >> t >> u >> v;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
path[i][j] = INT_MAX; // Initialize path with large value
}
}
}
void BFS(int i, int j) {
queue<ii> q;
q.push({i, j});
path[i][j] = 0; // Starting point
while (!q.empty()) {
ii p = q.front();
q.pop();
for (int k = 0; k < 8; k++) {
int i1 = p.first + dx[k];
int j1 = p.second + dy[k];
if (i1 >= 1 && i1 <= n && j1 >= 1 && j1 <= n && a[i1][j1]) {
q.push({i1, j1});
path[i1][j1] = min(path[i1][j1], path[p.first][p.second] + 1);
a[i1][j1] = 0; // Mark visited cell
}
}
}
}
int main() {
inp();
BFS(s, t);
if (path[u][v] == INT_MAX) {
cout << "-1\n";
} else {
cout << path[u][v] << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgbWF4biA9IDEwMDE7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gaWk7CmNvbnN0IGludCBkeFs4XSA9IHsxLCAyLCAyLCAxLCAtMSwgLTIsIC0yLCAtMX07CmNvbnN0IGludCBkeVs4XSA9IHsyLCAxLCAtMSwgLTIsIC0yLCAtMSwgMSwgMn07CgppbnQgbiwgcywgdCwgdSwgdjsKaW50IGFbbWF4bl1bbWF4bl07CmludCBwYXRoW21heG5dW21heG5dOwoKdm9pZCBpbnAoKSB7CiAgICBjaW4gPj4gbiA+PiBzID4+IHQgPj4gdSA+PiB2OwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKSB7CiAgICAgICAgICAgIGNpbiA+PiBhW2ldW2pdOwogICAgICAgICAgICBwYXRoW2ldW2pdID0gSU5UX01BWDsgLy8gSW5pdGlhbGl6ZSBwYXRoIHdpdGggbGFyZ2UgdmFsdWUKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgQkZTKGludCBpLCBpbnQgaikgewogICAgcXVldWU8aWk+IHE7CiAgICBxLnB1c2goe2ksIGp9KTsKICAgIHBhdGhbaV1bal0gPSAwOyAvLyBTdGFydGluZyBwb2ludAogICAgd2hpbGUgKCFxLmVtcHR5KCkpIHsKICAgICAgICBpaSBwID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCA4OyBrKyspIHsKICAgICAgICAgICAgaW50IGkxID0gcC5maXJzdCArIGR4W2tdOwogICAgICAgICAgICBpbnQgajEgPSBwLnNlY29uZCArIGR5W2tdOwogICAgICAgICAgICBpZiAoaTEgPj0gMSAmJiBpMSA8PSBuICYmIGoxID49IDEgJiYgajEgPD0gbiAmJiBhW2kxXVtqMV0pIHsKICAgICAgICAgICAgICAgIHEucHVzaCh7aTEsIGoxfSk7CiAgICAgICAgICAgICAgICBwYXRoW2kxXVtqMV0gPSBtaW4ocGF0aFtpMV1bajFdLCBwYXRoW3AuZmlyc3RdW3Auc2Vjb25kXSArIDEpOwogICAgICAgICAgICAgICAgYVtpMV1bajFdID0gMDsgLy8gTWFyayB2aXNpdGVkIGNlbGwKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpbnAoKTsKICAgIEJGUyhzLCB0KTsKICAgIGlmIChwYXRoW3VdW3ZdID09IElOVF9NQVgpIHsKICAgICAgICBjb3V0IDw8ICItMVxuIjsKICAgIH0gZWxzZSB7CiAgICAgICAgY291dCA8PCBwYXRoW3VdW3ZdIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=
MTAKNiA3IDggOQowIDEgMSAwIDEgMCAxIDAgMSAwCjEgMSAwIDAgMSAxIDAgMCAxIDAKMSAxIDAgMSAxIDAgMCAxIDAgMAowIDEgMSAxIDEgMSAxIDEgMSAwCjAgMCAxIDAgMCAxIDEgMSAxIDEKMSAxIDAgMSAxIDAgMSAwIDAgMAoxIDAgMCAwIDAgMSAxIDAgMSAxCjEgMSAxIDEgMSAxIDEgMCAxIDEKMSAwIDAgMSAxIDEgMCAxIDEgMQoxIDAgMCAxIDEgMCAwIDEgMCAx
10
6 7 8 9
0 1 1 0 1 0 1 0 1 0
1 1 0 0 1 1 0 0 1 0
1 1 0 1 1 0 0 1 0 0
0 1 1 1 1 1 1 1 1 0
0 0 1 0 0 1 1 1 1 1
1 1 0 1 1 0 1 0 0 0
1 0 0 0 0 1 1 0 1 1
1 1 1 1 1 1 1 0 1 1
1 0 0 1 1 1 0 1 1 1
1 0 0 1 1 0 0 1 0 1