#include <iostream>
#include <string>
#include <queue>
#include <vector>
using namespace std;
typedef pair<string, int> P;
vector<string> vs;

bool is_memo(string str)
{
	for(unsigned i=0;i<vs.size();i++){
		if(vs[i] == str)
			return false;
	}
	return true;
}
int search(string str)
{
	queue<P> que;
	P p;p.first = str;p.second = 0;
	que.push(p);
	vs.push_back(p.first);
	while(que.size()){
		P s = que.front();que.pop();
		if(s.second > 10)
			break;
		bool is_all = true;
		for(unsigned i=0;i<s.first.size();i++){
			if(s.first[0] != s.first[i]){
				is_all = false;
				break;
			}
		}
		if(is_all){
			return s.second;
		}
		int a=0;
		for(unsigned i=0;i<s.first.size()-1;i++){
			P ss = s;
			if((ss.first[i] != ss.first[i+1])){
				if((ss.first[i] == 'r' && ss.first[i+1] == 'g') || (ss.first[i] == 'g' && ss.first[i+1] == 'r')){
					ss.first[i] = 'b';ss.first[i+1] = 'b';
					if(is_memo(ss.first)){
						ss.second++; que.push(ss);vs.push_back(ss.first);
					}
				}
				if((ss.first[i] == 'r' && ss.first[i+1] == 'b') || (ss.first[i] == 'b' && ss.first[i+1] == 'r')){
					ss.first[i] = 'g';ss.first[i+1] = 'g';
					if(is_memo(ss.first)){
						ss.second++; que.push(ss);vs.push_back(ss.first);
					}
				}
				if((ss.first[i] == 'b' && ss.first[i+1] == 'g') || (ss.first[i] == 'g' && ss.first[i+1] == 'b')){
					ss.first[i] = 'r';ss.first[i+1] = 'r';
					if(is_memo(ss.first)){
						ss.second++; que.push(ss);vs.push_back(ss.first);
					}
				}
			}
		}
	}
	return -1;
}

int main()
{
	string str;
	while(cin >> str){
		if(str[0] == '0')
			break;
		int p = search(str);
		if(p == -1)
			cout << "NA" << endl;
		else
			cout << p << endl;
	}
	return 0;
}