#include<cstdio>
#include<vector>
#include<cstdlib>

#define	mp	make_pair
#define	pb	push_back

using namespace std;

typedef	pair<int,int>	pii;

int memo[1000][5];

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

int main(){
	for(int w,h;scanf("%d%d",&w,&h),w;){
		pii s,g;
		vector<pii> pach[5];
		for(int i=0;i<h;i++){
			static char field[1001];
			scanf("%s",field);
			for(int j=0;j<w;j++){
				if     (field[j]=='S')	s=mp(i,j);
				else if(field[j]=='G')	g=mp(i,j);
				else if(field[j]=='1')	pach[field[j]-'1'].pb(mp(i,j));
				else if(field[j]=='2')	pach[field[j]-'1'].pb(mp(i,j));
				else if(field[j]=='3')	pach[field[j]-'1'].pb(mp(i,j));
				else if(field[j]=='4')	pach[field[j]-'1'].pb(mp(i,j));
				else if(field[j]=='5')	pach[field[j]-'1'].pb(mp(i,j));
			}
		}

		int ans=1<<30,bestpartner;
		for(int partner=0;partner<5;partner++){
			int bef=partner,next=(partner+1)%5;
			for(int i=0;i<pach[next].size();i++){
				memo[i][next]=dis(s,pach[next][i]);
			}
			bef=next; next=(next+1)%5;
			for(int k=1;k<4;k++){
				for(int i=0;i<pach[next].size();i++){
					memo[i][next]=1<<30;
					for(int j=0;j<pach[bef].size();j++){
						memo[i][next]=min(memo[i][next],
							memo[j][bef]+dis(pach[bef][j],pach[next][i]));
					}
				}
				bef=next; next=(next+1)%5;
			}
			for(int j=0;j<pach[bef].size();j++){
				int tmp=memo[j][bef]+dis(pach[bef][j],g);
				if(tmp<ans){
					ans=tmp;
					bestpartner=partner;
				}
			}
		}

		if(ans==(1<<30))	puts("NA");
		else	printf("%d %d\n",bestpartner+1,ans);
	}

	return 0;
}