#include<bits/stdc++.h>
#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define dec(x, y) fixed << setprecision((y)) << (x)
#define xx first
#define yy second
#define srt(v) sort((v).begin(), (v).end())
#define srtr(v) sort((v).rbegin(), (v).rend())
#define pb push_back
#define popb pop_back
#define sz(a) (int)(a).size()
#define len(a) (int)(a).length()
#define mp make_pair

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

string s;
int ima[26], novi[26];
int main() {
    ios;
    cin >> s;
    int n=len(s);
    int poc=n/2;
    for(int i=0; i<n/2; i++) {
        if(s[i]!=s[n-i-1]) {
            poc=i;
            break;
        }
    }
    s=s.substr(poc, n-2*poc);
    n=len(s);
    for(int i=0; i<n; i++) {
        ima[s[i]-'a']++;
    }
    int mini=n;
    /// levi ne diramo
    for(int i=0;; i++) {
        if(i==(n-1)/2) {
            if(ima[s[i]-'a']&1) mini=min(mini, n-i-1);
            else mini=min(mini, n-i);
            break;
        }
        novi[s[i]-'a']++;
        if(ima[s[i]-'a']/2<novi[s[i]-'a']) {
            mini=min(mini, n-i);
            break;
        }
    }
    for(int i=0; i<26; i++) novi[i]=0;
    /// desni ne diramo
    for(int i=n-1;; i--) {
        if(i==n/2) {
            if(ima[s[i]-'a']&1) mini=min(mini, n-i-1);
            else mini=min(mini, n-i);
            break;
        }
        novi[s[i]-'a']++;
        if(ima[s[i]-'a']/2<novi[s[i]-'a']) {
            mini=min(mini, i+1);
            break;
        }
    }
    cout << max(1, mini);
    return 0;
}