#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int w,h;
int f(pair<int,int>a,pair<int,int>b)
{
	return abs(a.first-b.first)+abs(a.second-b.second);
}
main()
{
	while(cin>>w>>h,h)
	{
		vector<vector<pair<int,int> > >a(5);
		pair<int,int>S,G;
		for(int i=0;i<h;i++)
		{
			string s;cin>>s;
			for(int j=0;j<w;j++)
			{
				if(s[j]=='.')continue;
				else if(s[j]=='S')S.first=i,S.second=j;
				else if(s[j]=='G')G.first=i,G.second=j;
				else a[s[j]-'1'].push_back(make_pair(i,j));
			}
		}
		int cnt=0;
		for(int i=0;i<5;i++)cnt+=a[i].size()>0;
		if(cnt<4)
		{
			cout<<"NA"<<endl;
			continue;
		}
		int ansa,ansd=1e9;
		for(int i=0;i<5;i++)
		{
			vector<vector<int> >dp(5,vector<int>(1000,1e9));
			int j=(i+1)%5;
			for(int k=0;k<a[j].size();k++)dp[j][k]=f(S,a[j][k]);
			for(int cnt=3;cnt--;)
			{
				int l=(j+1)%5;
				for(int k=0;k<a[j].size();k++)for(int K=0;K<a[l].size();K++)
				{
					dp[l][K]=min(dp[l][K],dp[j][k]+f(a[j][k],a[l][K]));
				}
				j=l;
			}
			int now=1e9;
			for(int k=0;k<a[j].size();k++)
			{
				now=min(now,dp[j][k]+f(a[j][k],G));
			}
			if(ansd>now)
			{
				ansd=now;
				ansa=i+1;
			}
		}
		cout<<ansa<<" "<<ansd<<endl;
	}
}

