#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<string>

using namespace std;

#define rep(i,n) for(int i=0;i<int(n);i++)
#define reps(i,n) for(int i=1;i<=int(n);i++)
#define sint(i) scanf("%d",&i);
#define sintt(i,j) scanf("%d%d",&i,&j);
#define sinttt(i,j,k) scanf("%d%d%d",&i,&j,&k);

#define INF 1010000000
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};

class S{
	public:
	string st;
	int n;
	S(string st,int n):st(st),n(n){}
};

int main(){
	while(1){
		string a;
		cin>>a;
		
		if(a=="0")break;
		
		queue<S> que;
		que.push(S(a,0));
		
		map<string,int> visit;
		int ans=-1;
		while(1){
			if(que.empty()==1){
				break;
			}
			
			S u=que.front();
			que.pop();
			
			if(visit[u.st]==1){
				continue;
			}
			visit[u.st]=1;
			
			int r=0,g=0,b=0;
			rep(i,u.st.size()){
				if(u.st[i]=='r'){
					r++;
				}
				if(u.st[i]=='g'){
					g++;
				}
				if(u.st[i]=='b'){
					b++;
				}
			}
			if((r==0&&g==0)||(r==0&&b==0)||(b==0&&g==0)){
				ans=u.n;
				break;
			}
			
			rep(i,u.st.size()-1){
				string nstr=u.st;
				if(u.st[i]=='r' && u.st[i+1]=='g'){
					nstr[i]=nstr[i+1]='b';
				}
				if(u.st[i]=='g' && u.st[i+1]=='r'){
					nstr[i]=nstr[i+1]='b';
				}
				if(u.st[i]=='r' && u.st[i+1]=='b'){
					nstr[i]=nstr[i+1]='g';
				}
				if(u.st[i]=='b' && u.st[i+1]=='r'){
					nstr[i]=nstr[i+1]='g';
				}
				if(u.st[i]=='b' && u.st[i+1]=='g'){
					nstr[i]=nstr[i+1]='r';
				}
				if(u.st[i]=='g' && u.st[i+1]=='b'){
					nstr[i]=nstr[i+1]='r';
				}
				
				que.push(S(nstr,u.n+1));
			}
		}
		if(ans==-1){
			puts("NA");
		}else{
			printf("%d\n",ans);
		}
	}	
}