#include #include #include #include using namespace std; vector palindromes (string t) { int n = t.size (); vector 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 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; }