//19
#include<iostream>
#include<algorithm>

using namespace std;

int main(){
  for(int w,h;cin>>w>>h,w|h;){
    char g[30][30];
    int c[30][30];
    for(int y=0;y<h;y++){
      for(int x=0;x<w;x++){
	cin>>g[y][x];
	c[y][x]=(g[y][x]=='N')?0:
	  (g[y][x]=='E')?1:
	  (g[y][x]=='S')?2:
	  (g[y][x]=='W')?3:-1;
      }
    }
    int t;
    for(t=0;t<=180;t++){
      int dy[]={-1,0,1,0};
      int dx[]={0,1,0,-1};
      bool p=false;
      for(int y=0;y<h;y++){
	for(int x=0;x<w;x++){
	  if(c[y][x]!=-1){
	    p=true;
	    for(int i=0;i<4;i++){
	      int nd=(c[y][x]+5-i)%4;
	      int ny=y+dy[nd];
	      int nx=x+dx[nd];
	      if((g[ny][nx]!='#')&&c[ny][nx]==-1){
		c[y][x]=nd;
		break;
	      }
	    }
	  }
	}
      }
      if(!p)break;
      int n[30][30];
      copy(c[0],c[30],n[0]);
      for(int d=0;d<4;d++){
	for(int y=0;y<h;y++){
	  for(int x=0;x<w;x++){
	    if(c[y][x]==3-d){
	      int ny=y+dy[3-d];
	      int nx=x+dx[3-d];
	      if((g[ny][nx]!='#')&&c[ny][nx]==-1&&n[ny][nx]==-1){
		n[ny][nx]=3-d;
		n[y][x]=-1;
	      }
	    }
	  }
	}
      }
      for(int y=0;y<h;y++){
	for(int x=0;x<w;x++){
	  if(g[y][x]=='X'){
	    n[y][x]=-1;
	  }
	}
      }
      copy(n[0],n[30],c[0]);
    }
    if(t<=180){
      cout<<t<<endl;
    }else{
      cout<<"NA"<<endl;
    }
  }
  return 0;
}