h,w,g[10][10],sx,sy,gx,gy;
P[10][10][7][7];//P[x][y][u][s]:=(Êu(x,y),ãÊu,ìÊs)ÌÅ¬yieB
Q[999][999];//Q[p]:=yieBpÌóÔL[AQ[p][i]:=x+y*10|u<<8|s<<16|e<<24 (e:Ê)
N[999];//N[p]:=Q[p]ÌTCY
E(p,x,y,u,s,e){
	p+=g[x][y]*(7-u);
	if(P[x][y][u][s]==-1||p<P[x][y][u][s]){
		P[x][y][u][s]=p;
		Q[p][N[p]++]=x+y*10|u<<8|s<<16|e<<24;
	}
}
main(){
	int x,y,p,t,u,s,e;
	for(;scanf("%d%d",&h,&w)*h;){
		for(y=0;y<h;y++){
			for(x=0;x<w;x++){
				scanf("%d",&g[x][y]);
			}
		}
		scanf("%d%d%d%d",&sy,&sx,&gy,&gx);
		memset(P,-1,sizeof(P));
		memset(N,0,sizeof(N));
		P[sx][sy][1][2]=0;
		Q[0][0]=sx+sy*10|1<<8|2<<16|3<<24;
		N[0]=1;
		p=0;
		for(;;){
			if(N[p]){
				t=Q[p][--N[p]];
				x=t&255,y=x/10,x%=10;
				if(x==gx&&y==gy)
					break;
				u=(t>>8)&255;
				s=(t>>16)&255;
				e=(t>>24)&255;
				if(x>0)
					E(p,x-1,y,e,s,7-u);
				if(x<w-1)
					E(p,x+1,y,7-e,s,u);
				if(y>0)
					E(p,x,y-1,s,7-u,e);
				if(y<h-1)
					E(p,x,y+1,7-s,u,e);
			}else{
				p++;
			}
		}
		printf("%d \n",p);
	}
}