#include<stdio.h>
#include<stdlib.h>
long int n,m,a[503][503],si,sj,fi,fj,i,j,ih[200000],jh[200000],dh[200000],ch[200000],
lh,i1,j1,d1,c1,i2,j2,d2,c2,cbest[503][503][8],aux,k,sol,
inou[8][5],jnou[8][5],dnou[8][5],cnou[8][5];
void init();
void free_heap();
void ad_heap();
void swap(long int ii1,long int ii2);
void heapdown(long int ic,long int nc);
void heapup(long int ic);
int main()
{
FILE *f,*g;f=fopen("car.in","r");g=fopen("car.out","w");
fscanf(f,"%ld%ld",&n,&m);
fscanf(f,"%ld%ld",&si,&sj);
fscanf(f,"%ld%ld",&fi,&fj);
init();
for(i=1;i<=n;i++)for(j=1;j<=m;j++){fscanf(f,"%ld",&a[i][j]);for(k=0;k<=7;k++)cbest[i][j][k]=20000000;}
for(i=0;i<=n+1;i++){a[i][0]=1;a[i][m+1]=1;}
for(j=0;j<=m+1;j++){a[0][j]=1;a[n+1][j]=1;}
for(i=1;i<=8;i++){ih[i]=si;jh[i]=sj;dh[i]=i-1;ch[i]=0;cbest[si][sj][i-1]=-200000000;}
lh=8;
while(lh)
{ if(ih[1]==fi&&jh[1]==fj)
{ ch[1]+=200000000;fprintf(g,"%ld\n",ch[1]);fcloseall();return 0;}
i1=ih[1];j1=jh[1];d1=dh[1];c1=ch[1];
free_heap();
for(k=0;k<=4;k++)
{ d2=dnou[d1][k];
i2=i1+inou[d1][k];
j2=j1+jnou[d1][k];
if(!a[i2][j2])
{ c2=c1+cnou[d1][k];
if(c2<cbest[i2][j2][d2])
{ cbest[i2][j2][d2]=c2;
ad_heap();
}
}
}
}
fprintf(g,"-1\n");
fcloseall();
return 0;
}
void free_heap()
{
if(lh==1) {lh--;return}
if(lh==0) return;
swap(1,lh); lh--;
if(lh>1) heapdown(1,lh);
}
void swap(long int ii1,long int ii2)
{
aux=ih[ii1];ih[ii1]=ih[ii2];ih[ii2]=aux;
aux=jh[ii1];jh[ii1]=jh[ii2];jh[ii2]=aux;
aux=dh[ii1];dh[ii1]=dh[ii2];dh[ii2]=aux;
aux=ch[ii1];ch[ii1]=ch[ii2];ch[ii2]=aux;
}
void heapdown(long int ic,long int nc)
{
long int is,is1;
is=2*ic;is1=2*ic+1;
if(is>nc) return;
if(is<nc) if(ch[is1]<ch[is])is=is1;
if(ch[is]<ch[ic]){swap(is,ic);heapdown(is,nc);}
}
void ad_heap()
{
lh++;ih[lh]=i2;jh[lh]=j2;dh[lh]=d2;ch[lh]=c2;
heapup(lh);
}
void heapup(long int ic)
{
long int is;
is=ic/2;
if(is)
if(ch[ic]<ch[is]){swap(ic,is);heapup(is);}
}
void init()
{
inou[0][0]=-1;jnou[0][0]= 0;dnou[0][0]=0;cnou[0][0]=0;
inou[0][1]=-1;jnou[0][1]= 1;dnou[0][1]=1;cnou[0][1]=1;
inou[0][2]=-1;jnou[0][2]=-1;dnou[0][2]=7;cnou[0][2]=1;
inou[0][3]= 0;jnou[0][3]= 1;dnou[0][3]=2;cnou[0][3]=2;
inou[0][4]= 0;jnou[0][4]=-1;dnou[0][4]=6;cnou[0][4]=2;
inou[1][0]=-1;jnou[1][0]= 1;dnou[1][0]=1;cnou[1][0]=0;
inou[1][1]= 0;jnou[1][1]= 1;dnou[1][1]=2;cnou[1][1]=1;
inou[1][2]=-1;jnou[1][2]= 0;dnou[1][2]=0;cnou[1][2]=1;
inou[1][3]= 1;jnou[1][3]= 1;dnou[1][3]=3;cnou[1][3]=2;
inou[1][4]=-1;jnou[1][4]=-1;dnou[1][4]=7;cnou[1][4]=2;
inou[2][0]= 0;jnou[2][0]= 1;dnou[2][0]=2;cnou[2][0]=0;
inou[2][1]= 1;jnou[2][1]= 1;dnou[2][1]=3;cnou[2][1]=1;
inou[2][2]=-1;jnou[2][2]= 1;dnou[2][2]=1;cnou[2][2]=1;
inou[2][3]= 1;jnou[2][3]= 0;dnou[2][3]=4;cnou[2][3]=2;
inou[2][4]=-1;jnou[2][4]= 0;dnou[2][4]=0;cnou[2][4]=2;
inou[3][0]= 1;jnou[3][0]= 1;dnou[3][0]=3;cnou[3][0]=0;
inou[3][1]= 1;jnou[3][1]= 0;dnou[3][1]=4;cnou[3][1]=1;
inou[3][2]= 0;jnou[3][2]= 1;dnou[3][2]=2;cnou[3][2]=1;
inou[3][3]= 1;jnou[3][3]=-1;dnou[3][3]=5;cnou[3][3]=2;
inou[3][4]=-1;jnou[3][4]= 1;dnou[3][4]=1;cnou[3][4]=2;
inou[4][0]= 1;jnou[4][0]= 0;dnou[4][0]=4;cnou[4][0]=0;
inou[4][1]= 1;jnou[4][1]=-1;dnou[4][1]=5;cnou[4][1]=1;
inou[4][2]= 1;jnou[4][2]= 1;dnou[4][2]=3;cnou[4][2]=1;
inou[4][3]= 0;jnou[4][3]=-1;dnou[4][3]=6;cnou[4][3]=2;
inou[4][4]= 0;jnou[4][4]= 1;dnou[4][4]=2;cnou[4][4]=2;
inou[5][0]= 1;jnou[5][0]=-1;dnou[5][0]=5;cnou[5][0]=0;
inou[5][1]= 0;jnou[5][1]=-1;dnou[5][1]=6;cnou[5][1]=1;
inou[5][2]= 1;jnou[5][2]= 0;dnou[5][2]=4;cnou[5][2]=1;
inou[5][3]=-1;jnou[5][3]=-1;dnou[5][3]=7;cnou[5][3]=2;
inou[5][4]= 1;jnou[5][4]= 1;dnou[5][4]=3;cnou[5][4]=2;
inou[6][0]= 0;jnou[6][0]=-1;dnou[6][0]=6;cnou[6][0]=0;
inou[6][1]=-1;jnou[6][1]=-1;dnou[6][1]=7;cnou[6][1]=1;
inou[6][2]= 1;jnou[6][2]=-1;dnou[6][2]=5;cnou[6][2]=1;
inou[6][3]=-1;jnou[6][3]= 0;dnou[6][3]=0;cnou[6][3]=2;
inou[6][4]= 1;jnou[6][4]= 0;dnou[6][4]=4;cnou[6][4]=2;
inou[7][0]=-1;jnou[7][0]=-1;dnou[7][0]=7;cnou[7][0]=0;
inou[7][1]=-1;jnou[7][1]= 0;dnou[7][1]=0;cnou[7][1]=1;
inou[7][2]= 0;jnou[7][2]=-1;dnou[7][2]=6;cnou[7][2]=1;
inou[7][3]=-1;jnou[7][3]= 1;dnou[7][3]=1;cnou[7][3]=2;
inou[7][4]= 1;jnou[7][4]=-1;dnou[7][4]=5;cnou[7][4]=2;
}