#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<26; i++)
            if (p[i][low-1]!=p[i][n-1]-p[i][high])
                return false;
    if (low==0)
    {
        if (high>r)
        {
            for (int i=0; i<26; i++)
                if (p[i][high]-p[i][r]!=p[i][r])
                    return false;
        }
        if (low<l)
        {
            for (int i=0; i<26; i++)
                if (p[i][l-1]!=p[i][r]-p[i][l-1])
                    return false;
        }
        return true;
    }
    if (high>r)
    {
        for (int i=0; i<26; i++)
            if (p[i][high]-p[i][r]>p[i][r]-p[i][l-1])
                return false;
    }
    if (low<l)
    {
        for (int i=0; i<26; i++)
            if (p[i][l-1]-p[i][low-1]>p[i][r]-p[i][l-1])
                return false;
    }
    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;
    }
    cout << r+1;
    return 0;
}