func_code_string: #include <bits/stdc++.h>   using namespace std;   int dp[5050][5050], q[5050][5050];   int ans[5050], len;   char s[5050];   void init() {     for (int i = 0; i < len; i++) {       int l = 0;       while (i - l >= 0 && i + l < len && s[i - l] == s[i + l])         dp[i - l][i + l] = 1, l++;       l = 0;       while (i - l >= 0 && i + 1 + l < len && s[i - l] == s[i + l + 1])         dp[i - l][i + l + 1] = 1, l++;     }   }   void solve() {     for (int t = 0; t < len; t++) {       for (int j = 0; j + t < len; j++) {         if (!dp[j][j + t]) continue;         int mid;         if (t % 2 == 0)           mid = (j + j + t) / 2 - 1;         else           mid = (j + j + t) / 2;         if (mid < j)           q[j][j + t] = 1;         else           q[j][j + t] = q[j][mid] + 1;         ans[q[j][j + t]]++;       }     }   }   int main() {     scanf( %s , s);     len = strlen(s);     memset(dp, 0, sizeof(dp)), memset(ans, 0, sizeof(ans)),         memset(q, 0, sizeof(q));     init();     solve();     for (int i = len - 1; i >= 1; i--) ans[i] += ans[i + 1];     for (int i = 1; i <= len; i++) {       if (i == 1)         printf( %d , ans[i]);       else         printf(  %d , ans[i]);     }     printf(  n );     return 0;   }   