#include <iostream>
#include <string>
#include <map>

using namespace std;

int main()
{
    int t, i, leva, desna, j, min1;
    map<char, int> mapa;
    map<char, int> mapa1;

    // UNOS
    string s;
    cin >> s;
    t = s.size();
    for(i=0; i<t; i++)
    {
        if(mapa.find(s[i])!=mapa.end())
        {
            mapa.find(s[i])->second++;
        }
        else
        {
            mapa.insert({s[i], 1});
        }
    }
    leva = -1;
    desna = -1;
    //

    // Proveravanje - leva polovina
    for(i=0; i<t/2; i++)
    {
        if(mapa1.find(s[i])!=mapa1.end())
        {
            mapa1.find(s[i])->second++;
            if(mapa1.find(s[i])->second > mapa.find(s[i])->second / 2)
            {
                leva = i;
                break;
            }
        }
        else
        {
            mapa1.insert({s[i], 1});
            if(mapa.find(s[i])->second==1)
            {
                leva = i;
                break;
            }
        }
    }
    //

    // Proveravanje - desna polovina

    map<char, int> mapa2;
    for(i=t-1; i>t/2; i--)
    {
        if(mapa2.find(s[i])!=mapa2.end())
        {
            mapa2.find(s[i])->second++;
            if(mapa2.find(s[i])->second > mapa.find(s[i])->second / 2)
            {
                desna = i;
                break;
            }
        }
        else
        {
            mapa2.insert({s[i], 1});
            if(mapa.find(s[i])->second==1)
            {
                desna = i;
                break;
            }
        }
    }
    if(leva==-1 && desna==-1)
    {
        int prviRazliciti=-1, poslednjiRazliciti=-1;
        bool bioPrvi = false;
        i=0;
        j=t-1;
        while(i<j)
        {
            if(s[i]!=s[j])
            {
                if(!bioPrvi)
                {
                    prviRazliciti = i;
                    bioPrvi = true;
                }
                poslednjiRazliciti = i;
            }
            i++;
            j--;
        }
        cout << poslednjiRazliciti - prviRazliciti + 1 << endl;
    }
    else
    {
        if(leva==-1)
        {
            leva = t/2;
        }
        else if(desna==-1)
        {
            desna = t/2+1;
        }
        min1=0;
        i=0;
        j=t-1;
        while(i<leva && j>desna)
        {
            if(s[i]==s[j])
            {
                i++;
                j--;
            }
            else
            {
                min1 = min(j-desna, leva-i);
                break;
            }
        }
        cout << desna - leva + 1 * (desna!=leva) + min1 << endl;
    }
}