#include<bits/stdc++.h>
using namespace std;
int p[30][200010];
string s;
int n;
void precalc()
{
    for (int i=0; i<n; i++)
    {
        if (i==0)
            p[s[i]-'a'][i]=1;
        else
        {
            for (int j=0; j<26; j++)
                p[j][i]=p[j][i-1];
            p[s[i]-'a'][i]++;
        }
    }
}
bool check(int l, int r)
{
    int low=min(l,n-1-r);
    int high=max(r,n-1-l);
    if (low)
        for (int i=0; i<low; i++)
            if (s[i]!=s[n-1-i])
                return false;
    int l1=n-1-r;
    int r1=n-1-l;
    if (l1>n/2 || l>n/2)
    {
        if (l>l1)
        {
            swap(l,l1);
            swap(r,r1);
        }
        for (int i=r+1; i<=l1-1; i++)
            if (s[i]!=s[n-1-i])
                return false;
        if (l==0)
        {
            for (int i=0; i<26; i++)
                if (p[i][r]!=p[i][r1]-p[i][l1-1])
                    return false;
        }
        else
            for (int i=0; i<26; i++)
                if (p[i][r]-p[i][l-1]!=p[i][r1]-p[i][l1-1])
                    return false;
        return true;
    }
    if (l1<l)
    {
        if (l1==0)
        {
            for (int i=0; i<26; i++)
                if (p[i][l-1]>p[i][r]-p[i][l-1])
                    return false;
        }
        else
            for (int i=0; i<26; i++)
                if (p[i][l-1]-p[i][l1-1]>p[i][r]-p[i][l-1])
                    return false;
        return true;
    }
    if (l1>l)
    {
        if (l==0)
        {
            for (int i=0; i<26; i++)
                if (p[i][r1]-p[i][r]>p[i][r])
                    return false;
        }
        else
            for (int i=0; i<26; i++)
                if (p[i][r1]-p[i][r]>p[i][r]-p[i][l-1])
                    return false;
        return true;
    }
    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> s;
    n=s.length();
    precalc();
    bool b=true;
    for (int i=0; i<n/2; i++)
    {
        if (s[i]!=s[n-1-i])
        {
            b=false;
            break;
        }
    }
    if (b)
    {
        cout << 1;
        return 0;
    }
    int l=0,r=n-1,m;
    while (l<r)
    {
        bool t;
        m=(l+r)/2;
        int i=0;
        while (i+m<n)
        {
            t=check(i,i+m);
            if (t)
            {
                r=m;
                break;
            }
            i++;
        }
        if (t)
            continue;
        l=m+1;
    }
    if (check(0,n-2) || check(1,n-1))
        r=min(r,n-2);
    cout << r+1;
    return 0;
}