#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define INF (1<<24)
int H,W,size,sy,sx,gy,gx,ans,ans2;
int t[10000],ty[10000],tx[10000];
int dp[(1<<5)][10000];
int calc(int y,int x,int y2,int x2){return abs(y-y2)+abs(x-x2);}
int rec(int S,int pos);
void init();
int main(){
  while(cin>>W>>H&&W&&H){
    init();
    for(int i=0;i<H;i++){
      for(int j=0;j<W;j++){
	char ch;cin>>ch;
	if(ch=='S')sy=i,sx=j;
	else if(ch=='G')gy=i,gx=j;
	else if(ch!='.'){
	  t[size]=ch-'1';
	  ty[size]=i;
	  tx[size]=j;
	  size++;
	}
      }
    }
    for(int i=0;i<5;i++){
      for(int j=0;j<size;j++){
	if(t[j]!=(i+1)%5)continue;
	int S = (1<<i);
	S |= (1<<t[j]);
	int a=rec(S,j)+calc(sy,sx,ty[j],tx[j]);
	if(a<ans2)ans2=a,ans=i+1;
      }
    }
    if(ans2==INF)cout<<"NA"<<endl;
    else cout<<ans<<' '<<ans2<<endl;
  }
  return 0;
}

void init(){
  size=0;
  ans2=INF;
  for(int i=0;i<(1<<5);i++){
    for(int j=0;j<10000;j++){
      dp[i][j]=-1;
    }
  }
}

int rec(int S,int pos){

  //cout<<S<< ' ' <<pos<<endl;
  if(S==(1<<5)-1)return calc(gy,gx,ty[pos],tx[pos]);
  if(dp[S][pos]!=-1)return dp[S][pos];

  int res=INF;
  for(int i=0;i<size;i++){
    if((S>>t[i])&1)continue;
    int a=(t[i]+4)%5;
    if((S>>a)&1)res=min(res, rec(S|(1<<t[i]),i)+calc(ty[pos],tx[pos],ty[i],tx[i]));
  }
  return dp[S][pos]=res;
}