//17
#include<iostream>
#include<vector>
#include<utility>
#include<cstdlib>
#include<algorithm>

using namespace std;

typedef pair<int,int> pii;

int ds(pii a,pii b){
  return abs(a.first-b.first)+abs(a.second-b.second);
}

int main(){
  for(int w,h;cin>>w>>h,w|h;){
    vector<pii> v[5];
    pii s,g;
    for(int y=0;y<h;y++){
      for(int x=0;x<w;x++){
	char c;
	cin>>c;
	switch(c){
	case 'S':
	  s=make_pair(x,y);
	  break;
	case 'G':
	  g=make_pair(x,y);
	  break;
	case '.':
	  break;
	default:
	  v[c-'1'].push_back(make_pair(x,y));
	  break;
	}
      }
    }
    int l=0;
    for(int i=0;i<5;i++){
      l+=v[i].empty();
    }
    if(l>=2){
      cout<<"NA"<<endl;
    }else{
      int m=1<<30,p;
      for(int i=0;i<5;i++){
	int d[4][1000];
	fill(d[0],d[4],1<<30);
	for(int j=0;j<v[i].size();j++){
	  d[0][j]=ds(v[i][j],s);
	}
	for(int j=1;j<=3;j++){
	  for(int k=0;k<v[(i+j)%5].size();k++){
	    for(int l=0;l<v[(i+j-1)%5].size();l++){
	      d[j][k]=min(d[j][k],d[j-1][l]+ds(v[(i+j-1)%5][l],v[(i+j)%5][k]));
	    }
	  }
	}
	for(int j=0;j<v[(i+3)%5].size();j++){
	  if(m>d[3][j]+ds(g,v[(i+3)%5][j])){
	    m=d[3][j]+ds(g,v[(i+3)%5][j]);
	    p=(i+4)%5+1;
	  }
	}
      }
      cout<<p<<' '<<m<<endl;
    }
  }
  return 0;
}