#include <bits/stdc++.h>
#define ll long long
#define go ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;
int const N = 51;
int n;
int sx, sy, tx, ty;
char grid[N][N];
bool vis[N][N];
bool is_inside(int x, int y)
{
if (x < 0 || x >= n)
{
return false;
}
if (y < 0 || y >= n)
{
return false;
}
if (grid[x][y] == '1')
{
return false;
}
return true;
}
int cost(int x1, int y1, int x2, int y2)
{
return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
}
void dfs(int x, int y, vector<pair<int, int>> &v)
{
vis[x][y] = true;
v.push_back({x, y});
int i[] = {-1, 1, 0, 0};
int j[] = {0, 0, 1, -1};
for (int k = 0; k < 4; k++)
{
if (is_inside(x + i[k], y + j[k]) && !vis[x + i[k]][y + j[k]])
{
dfs(x + i[k], y + j[k], v);
}
}
}
void solve()
{
cin >> n;
cin >> sx >> sy;
cin >> tx >> ty;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> grid[i][j];
}
}
vector<pair<int, int>> set1, set2;
dfs(sx - 1, sy - 1, set1);
dfs(tx - 1, ty - 1, set2);
int ans = 1e9;
for (pair<int, int> v1 : set1)
{
for (pair<int, int> v2 : set2)
{
ans = min(ans, cost(v1.first, v1.second, v2.first, v2.second));
}
}
cout << ans;
}
int main()
{
int t = 1;
// cin>>t;
// go;
while (t--)
{
solve();
cout << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZ28gaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCksIGNpbi50aWUoMCksIGNvdXQudGllKDApCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgY29uc3QgTiA9IDUxOwppbnQgbjsKaW50IHN4LCBzeSwgdHgsIHR5OwpjaGFyIGdyaWRbTl1bTl07CmJvb2wgdmlzW05dW05dOwpib29sIGlzX2luc2lkZShpbnQgeCwgaW50IHkpCnsKICAgIGlmICh4IDwgMCB8fCB4ID49IG4pCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgaWYgKHkgPCAwIHx8IHkgPj0gbikKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZiAoZ3JpZFt4XVt5XSA9PSAnMScpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KaW50IGNvc3QoaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKQp7CiAgICByZXR1cm4gKHgxIC0geDIpICogKHgxIC0geDIpICsgKHkxIC0geTIpICogKHkxIC0geTIpOwp9CnZvaWQgZGZzKGludCB4LCBpbnQgeSwgdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiAmdikKewogICAgdmlzW3hdW3ldID0gdHJ1ZTsKICAgIHYucHVzaF9iYWNrKHt4LCB5fSk7CiAgICBpbnQgaVtdID0gey0xLCAxLCAwLCAwfTsKICAgIGludCBqW10gPSB7MCwgMCwgMSwgLTF9OwogICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyBrKyspCiAgICB7CiAgICAgICAgaWYgKGlzX2luc2lkZSh4ICsgaVtrXSwgeSArIGpba10pICYmICF2aXNbeCArIGlba11dW3kgKyBqW2tdXSkKICAgICAgICB7CiAgICAgICAgICAgIGRmcyh4ICsgaVtrXSwgeSArIGpba10sIHYpOwogICAgICAgIH0KICAgIH0KfQp2b2lkIHNvbHZlKCkKewogICAgY2luID4+IG47CiAgICBjaW4gPj4gc3ggPj4gc3k7CiAgICBjaW4gPj4gdHggPj4gdHk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbiA+PiBncmlkW2ldW2pdOwogICAgICAgIH0KICAgIH0KICAgIHZlY3RvcjxwYWlyPGludCwgaW50Pj4gc2V0MSwgc2V0MjsKICAgIGRmcyhzeCAtIDEsIHN5IC0gMSwgc2V0MSk7CiAgICBkZnModHggLSAxLCB0eSAtIDEsIHNldDIpOwogICAgaW50IGFucyA9IDFlOTsKICAgIGZvciAocGFpcjxpbnQsIGludD4gdjEgOiBzZXQxKQogICAgewogICAgICAgIGZvciAocGFpcjxpbnQsIGludD4gdjIgOiBzZXQyKQogICAgICAgIHsKICAgICAgICAgICAgYW5zID0gbWluKGFucywgY29zdCh2MS5maXJzdCwgdjEuc2Vjb25kLCB2Mi5maXJzdCwgdjIuc2Vjb25kKSk7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBhbnM7Cn0KCmludCBtYWluKCkKewogICAgaW50IHQgPSAxOwogICAgLy8gY2luPj50OwogICAgLy8gZ287CiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIHNvbHZlKCk7CiAgICAgICAgY291dCA8PCAiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0=