#include <iostream>
using namespace std;
//abcdbdcbdbda
bool Contains(int a[26], int b[26]){
    for(int i = 0; i < 26; i++)
        if(a[i] < b[i])
            return false;
    return true;
}

int F(string& s){
    int i, r = s.length();
    int l[26], d[26];

    for(i = 0; i < 26; i++)
        l[i] = d[i] = 0;
    for(i = 0; i < s.length(); i++)
        d[s[i] - 'a']++;

    for(i = 0; i < s.length(); i++){
        if(Contains(d, l)) r = min<int>(r, s.length() - i);
        l[s[i] - 'a']++;
        d[s[i] - 'a']--;
    }
    for(i = 0; i < 26; i++)
        l[i] = d[i] = 0;
    for(i = 0; i < s.length(); i++)
        l[s[i] - 'a']++;

    for(i = s.length() - 1; i >= 0; i--){
        if(Contains(l, d)) r = min<int>(r, i + 1);
        d[s[i] - 'a']++;
        l[s[i] - 'a']--;
    }

    return r;
}

int main(){
    string s;
    cin >> s;
    int l = 0, d = s.length() - 1;

    int r = 1;
    while(l < s.length() && d >= 0 && l < d){
        if(s[l] != s[d]){
            s.erase(d + 1, string::npos);
            s.erase(0, l);
            r = F(s);
            break;
        }

        l++;
        d--;
    }
    cout << r << endl;
    return 0;
}