func_code_string: #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;   }   