#include <iostream>

using namespace std;

int indeksNiza(char slovo)
{
    if(slovo == 'a')
    {
        return 0;
    }
    else if(slovo == 'b')
    {
        return 1;
    }
    else if(slovo == 'c')
    {
        return 2;
    }
    else if(slovo == 'd')
    {
        return 3;
    }
    else if(slovo == 'e')
    {
        return 4;
    }
    else if(slovo == 'f')
    {
        return 5;
    }
    else if(slovo == 'g')
    {
        return 6;
    }
    else if(slovo == 'h')
    {
        return 7;
    }
    else if(slovo == 'i')
    {
        return 8;
    }
    else if(slovo == 'j')
    {
        return 9;
    }
    else if(slovo == 'k')
    {
        return 10;
    }
    else if(slovo == 'l')
    {
        return 11;
    }
    else if(slovo == 'm')
    {
        return 12;
    }
    else if(slovo == 'n')
    {
        return 13;
    }
    else if(slovo == 'o')
    {
        return 14;
    }
    else if(slovo == 'p')
    {
        return 15;
    }
    else if(slovo == 'q')
    {
        return 16;
    }
    else if(slovo == 'r')
    {
        return 17;
    }
    else if(slovo == 's')
    {
        return 18;
    }
    else if(slovo == 't')
    {
        return 19;
    }
    else if(slovo == 'u')
    {
        return 20;
    }
    else if(slovo == 'v')
    {
        return 21;
    }
    else if(slovo == 'w')
    {
        return 22;
    }
    else if(slovo == 'x')
    {
        return 23;
    }
    else if(slovo == 'y')
    {
        return 24;
    }
    else
    {
        return 25;
    }
}

int main()
{
    string t;
    int polaDuzineStringa;
    int brRaz = 0;
    int disbalans[26];
    bool menjanDisbalansSrednjeg = false;
    
    for(int i = 0; i < 26; i++)
    {
        disbalans[i] = 0;
    }
    
    cin >> t;
    
    polaDuzineStringa = t.length() / 2;
    
    for(int i = 0; i < polaDuzineStringa; i++)
    {
        if(t[i] != t[t.length() - i - 1])
        {
            brRaz++;
            disbalans[indeksNiza(t[i])]--;
            disbalans[indeksNiza(t[t.length() - i - 1])]++;
        }
    }
    
    if(t.length() % 2 == 1)
    {
        if(disbalans[indeksNiza(t[polaDuzineStringa])] > 0)
        {
            disbalans[indeksNiza(t[polaDuzineStringa])]--;
            menjanDisbalansSrednjeg = true;
        }
        else if(disbalans[indeksNiza(t[polaDuzineStringa])] < 0)
        {
            disbalans[indeksNiza(t[polaDuzineStringa])]++;
            menjanDisbalansSrednjeg = true;
        }
    }
    
    int zbir = 0;
    
    for(int i = 0; i < 26; i++)
    {
        if(disbalans[i] < 0)
        {
            zbir -= disbalans[i];
        }
        else
        {
            zbir += disbalans[i];
        }
    }
    
    if(zbir > 1)
    {
        if((menjanDisbalansSrednjeg == true) && (disbalans[indeksNiza(t[polaDuzineStringa])] == 0))
        {
            cout << zbir + 1 << endl;
        }
        else if(brRaz > zbir)
        {
            cout << zbir + 1 << endl;
        }
        else
        {
            cout << zbir << endl;
        }
    }
    else
    {
        if(t.length() % 2 == 1)
        {
            if((zbir == 0) && (disbalans[indeksNiza(t[polaDuzineStringa])] == 0) && (brRaz == 0))
            {
                cout << 1;
            }
            else if((zbir != 0) && (menjanDisbalansSrednjeg == true))
            {
                cout << brRaz + 1;
            }
            else
            {
                cout << brRaz;
            }
        }
        else
        {
            if(brRaz == 0)
            {
                cout << 1;
            }
            else
            {
                cout << brRaz;
            }
        }
    }
    
    return 0;
}