z//走迷宫,bfs
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 4 //行
#define m 4 //列
typedef struct dNode
{
int x;
int y;
int step;
} Node;
//表示上下左右四个操作
int u[4] = {0,0,-1,1};
int v[4] = {-1,1,0,0};
int vis[100][100];
int a[100][100];
int bfs(int nx,int ny,int tx,int ty)
{
Node q[100000];
int head = 0,tail = 1,k,i,j;
Node d;
d.x = nx;
d.y = ny;
d.step = 0;
q[tail] = d;
while(head <= tail)
{
++ head;
Node nd = q[head];
vis[nd.x][nd.y] = 1;
for(k = 0; k < 4; k ++)
{
int cx = nd.x + u[k];
int cy = nd.y + v[k];
if(cx <= m && cx >= 1 && cy <= n && cy >= 1 && !vis[cx][cy] && a[cx][cy] == 0)
{
Node cd;
cd.x = cx;
cd.y = cy;
cd.step = nd.step + 1;
q[++ tail] = cd;
vis[cx][cy] = 1;
if(cx == tx && cy == ty)
{
return cd.step;
}
}
}
}
}
int main()
{
int i,j,a1,b,c,d;
int nx,ny,tx,ty;
for(i = 1; i <= n; ++ i)
for(j = 1; j <= m; ++ j)
{
scanf("%d",&a[i][j]);//0表示路,1表示墙
}
scanf("%d %d %d %d",&a1,&b,&c,&d);
printf("%d",bfs(a1,b,c,d));
scanf("%d",&i);
return 0;
}