#include<bits/stdc++.h>
using namespace std;

#define IOS ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define push_back pb
#define pop_back ppb
#define first fi
#define second se

int ukupno[100]={};
int prefiksna[100]={};

int odpocetka(string s, int pocetak, int kraj){
	kraj++;
	int duzina = kraj - pocetak;
	int i = pocetak;
	for(i=pocetak; i<pocetak+duzina/2; i++){
		prefiksna[s[i] - 'a']++;
		ukupno[s[i] - 'a']--;
		if(prefiksna[s[i]-'a']>ukupno[s[i]-'a']){
			return kraj - i;
		}
	}
	if(duzina%2==1){
		if(ukupno[s[pocetak+duzina/2]-'a'] != prefiksna[s[pocetak+duzina/2]-'a'] + 1){
			return kraj - (pocetak + duzina / 2);
		}
		else{
			for(int j=1; j<kraj-(pocetak+duzina/2); j++){
				if(s[pocetak+duzina/2+j] != s[pocetak+duzina/2-j]){
					return kraj - (pocetak + duzina / 2) - j;
				}
			}
		}
	}
	else{
		for(int j=pocetak+duzina/2; j<kraj; j++){
			if(s[j] != s[pocetak+duzina/2-(j-pocetak-duzina/2)-1]){
				return kraj - j;
			}
		}
	}
	return -1;
}

int odkraja(string s, int pocetak, int kraj){
	reverse(s.begin(), s.end());
	return odpocetka(s, pocetak, kraj);
}

int main(){
	IOS;
	string s;
	cin >> s;
	int n = s.size();
	int x, y;
	for(int i=0; i<n; i++){
		ukupno[s[i]-'a']++;
	}
	int i=0, j=n-1;
	while(s[i] == s[j] && i<j){
		ukupno[s[i]-'a'] -= 2;
		i++;
		j--;
	}
	if(i>=j){
		cout << "1";
	}
	else{
		x = odpocetka(s, i, j);
		y = odkraja(s, i, j);
		cout << min(x, y);
	}
	
	return 0;
}