#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using namespace std;

vector <int> palindromes (string t) {
    int n = t.size ();
    vector <int> w (n);
    int lo = 0, hi = 0;
    for (int i = 0; i < n; i++) {
        if (i < hi)
            w[i] = min (w[lo + hi - i], hi - i);
        while (i - w[i] >= 0 && i + w[i] < n &&
            t[i - w[i]] == t[i + w[i]])
                w[i] += 1;
        if (hi < i + w[i]) {
            lo = i - w[i];
            hi = i + w[i];
        }
    }
    return w;
}

int main () {
    string s;
    cin >> s;
    string t;
    for (int i = 0; i < int (s.size ()); i++) {
        if (i > 0)
            t += '*';
        t += s[i];
    }
    vector <int> w = palindromes (t);
    long long res = 0;
    for (int i = 0; i < int (w.size ()); i++) {
        res += (w[i] + !(i & 1)) / 2;
    }
    cout << res << endl;
    return 0;
}
