#include<bits/stdc++.h>
using namespace std;
string s; int sl,g,lr,dr; int a[26],b[26],ad[26],bd[26];
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>s;
    sl=s.size();
    for(int i = 0; i<sl;i++){
        a[s[i]-'a']++;
        ad[s[i]-'a']++;
    }
    //g je velicina kraja
    for(g = 0; s[g]==s[sl-1-g] && g<=sl/2; g++){
        a[s[g]-'a']-=2;
        ad[s[g]-'a']-=2;
    }
    if(g==sl/2+1){
        cout<<1; return 0;
    }
    //cout<<g<<"\n";
    //g je dobar
    //skidanje sleva, ostavljanje desno
    int il; bool bo = false;
    for(il = g; il<sl/2; il++){
        a[s[il]-'a']--;
        b[s[il]-'a']++;
        if(a[s[il]-'a']<b[s[il]-'a']){
            break;
        }
    }
    if(il==sl/2){
        if(sl%2==1){
            a[s[il]-'a']--;
            if(a[s[il]-'a']<b[s[il]-'a']){
                bo=true; //cout<<"lbo\n";
            }
        }
        //cout<<"stigaol\n";
        for(;!bo;il++){
            if(s[il]!=s[sl-1-il]) break;
        }
    }
    if(bo) lr=(sl-g-g)/2+1;
    else lr=sl-g-il;
    //cout<<"lr "<<lr<<"\n";
    bo=false;
    for(il = sl-1-g; sl-1-il<sl/2; il--){
        ad[s[il]-'a']--;
        bd[s[il]-'a']++;
        if(ad[s[il]-'a']<bd[s[il]-'a']){
            break;
        }
    }
    if(sl-1-il==sl/2){
        if(sl%2==1){
            ad[s[il]-'a']--;
            if(ad[s[il]-'a']<bd[s[il]-'a']){
                bo=true; //cout<<"dbo\n";
            }
        }
        //cout<<"stigaod\n";
        for(;!bo;il--){
            if(s[il]!=s[sl-1-il]) break;
        }
    }
    if(bo) dr=(sl-g-g)/2+1;
    else dr=sl-g-(sl-1-il);
    //cout<<"dr "<<dr<<"\n";
    if(lr>dr) cout<<dr;//dr je
    else cout<<lr;
    return 0;
}