#include<iostream>
#include<cmath>
using namespace std;
#define itn int
bool a[60][60];
int dx[5]={0,0,1,0,-1},dy[5]={0,1,0,-1,0};
itn minn=1e9,fx,fy;int n,m;
int ads(int x){
return x>0?x:-x;
}
void dfs(itn nx,int ny,int dir,int was){
if(nx<0||nx>m||ny<0||ny>n||a[nx][ny])
return;
if(nx==fx&&ny==fy){
minn=min(minn,was);
return;
}
for(int i=1;i<=4;i++){
for(int j=1;j<=3;j++){//19
if(i==-1||j==-1){
cout<<"!";
}
dfs(nx+dx[i]*j,ny+dy[i]*j,i,was+ads(dir-i)+j);//23
}
}
return;
}
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
char d;
int x,y;
cin>>x>>y>>fx>>fy>>d;
int dir;
switch(d){
case 'E':dir=2;break;
case 'W':dir=4;break;
case 'S':dir=3;break;
case 'N':dir=1;break;
}
dfs(x,y,dir,0);
cout<<minn;
return 0;
}
RT有时候还在23行崩溃