#include <bits/stdc++.h>
using namespace std;
template <class T>
T sq(T n) {
  return n * n;
}
template <class T>
T gcd(T a, T b) {
  return (b != 0 ? gcd<T>(b, a % b) : a);
}
template <class T>
T lcm(T a, T b) {
  return (a / gcd<T>(a, b) * b);
}
template <class T>
T power(T N, T P) {
  return (P == 0) ? 1 : N * power(N, P - 1);
}
int A[5000001], len;
long long dp[5000001];
int convert(char c) {
  if (c >= 'a' && c <= 'z')
    return (int)(c - 87);
  else if (c >= '0' && c <= '9')
    return (int)(c - 48);
  else
    return (int)(c - 29);
}
int main(int argc, char *argv[]) {
  string S;
  int i;
  long long k1, k2, v = 1, res = 1;
  cin >> S;
  len = S.length();
  for (i = 0; i <= len - 1; i++) A[i] = convert(S[i]);
  dp[0] = 1;
  k1 = A[0];
  k2 = A[0];
  for (i = 1; i <= len - 1; i++) {
    v *= 5;
    k1 += (v * A[i]);
    k2 = 5 * k2 + A[i];
    if (k1 == k2) dp[i] = dp[(i + 1) / 2 - 1] + 1;
    res += dp[i];
  }
  cout << res << endl;
  return 0;
}
