/* Problem: Robot Motion UVa 10116
   Programmer: Md. Mahmud Ahsan
   Description: Graph
   Compiled: Visual C++ 7.0
   Date: 17-08-06
*/
#include <iostream>
#include <string>
using namespace std;

const int MX = 100;
char grid[MX][MX];
int gridValue[MX][MX];

void init(int row, int col){
	for (int i = 0; i < row; ++i)
		for (int j = 0; j < col; ++j)
			gridValue[i][j] = -1;
}

int main(){
	//freopen("input.txt", "r", stdin);
	int row, col, pos;
	int a, b, path, exit, b4Loop;
	char ch;
	bool found;

	while (cin >> row >> col >> pos){
		if (!row && !col && !pos) break;
		
		for (int i = 0; i < row; ++i)
			cin >> grid[i];
		
		init(row, col);
		found = false;
		a = 0;
		b = --pos;
		path = 0;

		while (true){
			ch = grid[a][b];
			gridValue[a][b] = path++;
			
			switch (ch){
				case 'N': --a; break;
				case 'S': ++a; break;
				case 'E': ++b; break;
				case 'W': --b; break;
			}
			if (a < 0 || a >= row || b < 0 || b >= col){
				found = true;
				exit = path;
				break;
			}
			else if (gridValue[a][b] != -1){
				found = false;
				exit = path - gridValue[a][b];
				b4Loop = gridValue[a][b];
				break;
			}
		}
		if (found)
			cout << exit << " step(s) to exit" << endl;
		else
			cout << b4Loop << " step(s) before a loop of " << exit << " step(s)" << endl;
	}

	return 0;
}