#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin>>s;
    int n0=s.length()-1, i0;
    for(i0=0;i0<=n0/2;i0++)
    {
        if(s[i0]!=s[n0-i0])
            break;
    }
    if(i0>n0/2)
    {
        cout<<1<<endl;
        return 0;
    }
    int n=n0-2*i0+1,n1=-1,n2=-1;
    char c[n];
    for(int i=0;i<n;i++)
        c[i]=s[i+i0];
    int brsl[26],brsltek[26];
    for(int i=0;i<26;i++)
    {
        brsl[i]=0;
        brsltek[i]=0;
    }
    for(int i=0;i<n;i++)
    {
        brsl[c[i]-'a']+=1;
    }
    n--;
    bool indikator=true,indikator1=true;
    int itek=0,sredina;
    while(indikator)
    {
        brsltek[c[itek]-'a']+=1;
        if(brsltek[c[itek]-'a']>brsl[c[itek]-'a']/2)
        {
            indikator=false;
            if(itek>=ceil((float) n/2))
            {
                if(n%2==0)
                {
                    if(brsl[c[itek]-'a'] %2 ==0)
                    {
                        indikator1=false;
                        n1=n-itek+1;
                    }
                    sredina=itek;
                    n1=n-itek;
                    itek=0;
                    while(indikator1)
                    {
                        itek++;
                        if(c[sredina-itek]==c[sredina+itek])
                            n1--;
                        else
                            indikator1=false;
                    }
                }
                else
                {
                    sredina=itek;
                    n1=n-itek+1;
                    itek=0;
                    while(indikator1)
                    {
                        if(c[sredina+itek]==c[sredina-itek-1])
                            n1--;
                        else
                            indikator1=false;
                        itek++;
                    }
                }
            }
            else
            {
                n1=n-itek+1;
            }
        }
        itek+=1;
    }
    indikator=true;
    indikator1=true;
    itek=0;
    for(int i=0;i<=n/2;i++)
    {
        swap(c[i],c[n-i]);
    }
    while(indikator)
    {
        brsltek[c[itek]-'a']+=1;
        if(brsltek[c[itek]-'a']>brsl[c[itek]-'a']/2)
        {
            indikator=false;
            if(itek>=ceil((float) n/2))
            {
                if(n%2==0)
                {
                    if(brsl[c[itek]-'a'] %2 ==0)
                    {
                        indikator1=false;
                        n2=n-itek+1;
                    }
                    sredina=itek;
                    n2=n-itek;
                    itek=0;
                    while(indikator1)
                    {
                        itek++;
                        if(c[sredina-itek]==c[sredina+itek])
                            n2--;
                        else
                            indikator1=false;
                    }
                }
                else
                {
                    sredina=itek;
                    n2=n-itek+1;
                    itek=0;
                    while(indikator1)
                    {
                        if(c[sredina+itek]==c[sredina-itek-1])
                            n2--;
                        else
                            indikator1=false;
                        itek++;
                    }
                }
            }
            else
            {
                n2=n-itek+1;
            }
        }
        itek+=1;
    }
    cout<<min(n1,n2)<<endl;
}