#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#define lol(i,n) for(int i=0;i<n;i++)
typedef long long ll;
using namespace std;
string s[32],cop[32];
int h,w;
int main(){
	while(cin>>w>>h&&h+w){
		lol(i,h)cin>>s[i];
		int k=0;
		while(true){
			bool ok=true;
			lol(i,h)lol(j,w)if(s[i][j]=='E'||s[i][j]=='N'||s[i][j]=='W'||s[i][j]=='S')ok=false;
			if(ok)break;
			lol(i,h)cop[i]=s[i];
			lol(i,h)lol(j,w){
				if(s[i][j]=='#')continue;
				int dx[]={1,0,-1,0},dy[]={0,1,0,-1};
				char z[]={'E','N','W','S'};
				for(int r=0;r<4;r++){
					int xx=j-dx[r],yy=i-dy[r];
					if(xx<0||yy<0||xx==w||yy==h)continue;
					if(s[yy][xx]==z[r])swap(cop[yy][xx],cop[i][j]);
				}
			}
			lol(i,h)lol(j,w){
				if(s[i][j]=='X')cop[i][j]='X';
				s[i][j]=cop[i][j];
			}
			k++;
			if(k>180)break;
		}
		if(k>180)cout<<"NA"<<endl;
		else cout<<k<<endl;
	}
	return 0;
}