#include<iostream>
#include<string>
using namespace std;
int n,m;
int step,loop;
char map[200][200];
int t[200][200];
void dfs(int x,int y,int s)
{
if(x<0||x>=n||y<0||y>=m)
{
step=s-1;return ;
}
else if(t[x][y]!=0)
{
loop=s-t[x][y];
step=t[x][y]-1;
return ;
}
else switch(map[x][y])
{
case 'W':t[x][y]=s;dfs(x,y-1,s+1);break;
case 'E':t[x][y]=s;dfs(x,y+1,s+1);break;
case 'S':t[x][y]=s;dfs(x+1,y,s+1);break;
case 'N':t[x][y]=s;dfs(x-1,y,s+1);break;
default:break;
}
}
int main()
{
int start;
while(scanf("%d%d",&n,&m)!=EOF&&(n||m))//cin>>n>>m,n&&m
{
scanf("%d",&start);//cin>>start;
int i,j;
for(i=0;i<n;i++)
{getchar();
for(j=0;j<m;j++)
{
//cin>>map[i][j];
scanf("%c",&map[i][j]);
t[i][j]=0;
}
}
step=1;
loop=0;
dfs(0,start-1,step);
if(loop==0)
cout<<step<<" step(s)"<<" to exit"<<endl;
else cout<<step<<" step(s)"<<" before a loop of "
<<loop<<" step(s)"<<endl;
}
return 0;
}