#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    int rez=s.length()-1;
    int LevaStrana[30]={0};
    int DesnaStrana[30]={0};
    string pomocni=s;
    long long d=s.length();
    int l=0;
    while(pomocni[l]==pomocni[d-1-l])
    {
        pomocni.erase(pomocni.begin());
        pomocni.erase(pomocni.end());
        l++;
    }
    LevaStrana[pomocni[0]-'a']++;
    for(int i=1;i<s.length();i++)
    {
        DesnaStrana[pomocni[i]-'a']++;
    }
    int c =pomocni.length();
    for(int i=0;i<pomocni.length();i++)
    {
        bool p=true;
        int Brojac=0;
        for(int j=0;j<30;j++)
        {
            if(LevaStrana[j]>DesnaStrana[j]) p=false;
            else
            {
                DesnaStrana[j]-=LevaStrana[j];
                if(DesnaStrana[j]%2==1) Brojac++;
            }
        }
        if(p==true&&Brojac==1) rez=min(rez,c-i-1);
        LevaStrana[pomocni[i+1]-'a']++;
        DesnaStrana[pomocni[i+1]-'a']--;
    }
    LevaStrana[30]={0};
    DesnaStrana[30]={0};
    DesnaStrana[(pomocni.length()-1)-'a'];
    for(int z=0;z<s.length()-1;z++)
    {
        LevaStrana[pomocni[z]-'a']++;
    }
    for(int f=0;f<pomocni.length();f++)
    {
        bool q=true;
        int Brojac1=0;
        for(int g=0;g<30;g++)
        {
            if(DesnaStrana[g]>LevaStrana[g]) q=false;
            else
            {
                LevaStrana[g]-=DesnaStrana[g];
                if(LevaStrana[g]%2==1) Brojac1++;
            }
        }
        if(q==true&&Brojac1==1) rez=min(rez,c-f-1);
        LevaStrana[pomocni[pomocni.length()-f-2]-'a']--;
        DesnaStrana[pomocni[pomocni.length()-f-2]-'a']++;
    }
}