#include <iostream>
#include <vector>
#include <map>
#include <climits>
using namespace std;

map<string,bool> isre;
map<string,int> dp;

int solve(string st){
    if(dp.find(st)==dp.end()){
        bool is=true;
        for(int i=0;i<st.size();i++){
            if(st[i]!=st[0]) is=false;
        }
        if(is) return dp[st]=0;
        if(isre[st]) return dp[st]=-1;
        isre[st]=true;
        int miti=INT_MAX;
        for(int i=1;i<st.size();i++){
            string ne=st;
            if(st[i-1]!=st[i]){
                if(st[i-1]!='r'&&st[i]!='r'){
                    ne[i-1]=ne[i]='r';
                }else if(st[i-1]!='g'&&st[i]!='g'){
                    ne[i-1]=ne[i]='g';
                }else{
                    ne[i-1]=ne[i]='b';
                }
            }
            int ret=solve(ne);
            if(ret!=-1) miti=min(miti,ret+1);
        }
        isre[st]=false;
        if(miti==INT_MAX) return dp[st]=-1;
        else return dp[st]=miti;
    }else return dp[st];
}

int main(){
    string in;
    for(;;){
        cin>>in;
        if(in=="0") break;
        isre=map<string,bool>();
        dp=map<string,int>();
        int ret=solve(in);
        if(ret==-1) cout<<"NA"<<endl;
        else cout<<ret<<endl;
    }
}