#include<bits/stdc++.h>
using namespace std;
int n,m,q[305][6],x1,x2,y2,y3,h,t=1;
char c;
bool a[55][55];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(!a[i][j])a[i-1][j]=a[i][j-1]=a[i-1][j-1]=0;
}
cin>>x1>>y2>>x2>>y3>>c;
q[1][1]=x1,q[1][2]=y2,q[1][3]=0;
if(c=='E')q[1][4]=1;
if(c=='S')q[1][4]=2;
if(c=='W')q[1][4]=3;
if(c=='N')q[1][4]=4;
while(h<t){
h++;
for(int i=1;i<=3;i++){
if(q[h][4]==1&&q[h][2]+i<=m&&!a[q[h][1]][q[h][2]+i]){
t++;
q[t][2]=q[h][2]+i;
q[t][1]=q[h][1];
a[q[t][1]][q[t][2]]=1;
}
if(q[h][4]==2&&q[h][1]+i<=n&&!a[q[h][1]+i][q[h][2]]){
t++;
q[t][1]=q[h][1]+i;
q[t][2]=q[h][2];
a[q[t][1]][q[t][2]]=1;
}
if(q[h][4]==3&&q[h][2]-i>0&&!a[q[h][1]][q[h][2]-i]){
t++;
q[t][2]=q[h][2]-i;
q[t][1]=q[h][1];
a[q[t][1]][q[t][2]]=1;
}
if(q[h][4]==4&&q[h][1]-i>0&&!a[q[h][1]-i][q[h][2]]){
t++;
q[t][1]=q[h][1]-i;
q[t][2]=q[h][2];
a[q[t][1]][q[t][2]]=1;
}
q[t][3]=q[h][3]+1;
}
++t;
q[t][3]=q[h][3]+1;
if(q[h][4]==1)q[t][4]=4;
if(q[h][4]==2)q[t][4]=1;
if(q[h][4]==3)q[t][4]=2;
if(q[h][4]==4)q[t][4]=3;
++t;
q[t][3]=q[h][3]+1;
if(q[h][4]==1)q[t][4]=2;
if(q[h][4]==2)q[t][4]=3;
if(q[h][4]==3)q[t][4]=4;
if(q[h][4]==4)q[t][4]=1;
if(a[x2][y3]){
cout<<q[t][3]<<endl;
return 0;
}
}
return 0;
}
评测记录