#include <bits/stdc++.h>
using namespace std;
int main() {
  string s;
  cin >> s;
  int l = s.length();
  vector<vector<int>> dp(5000, vector<int>(5000, 0));
  vector<int> kk(s.size() + 1, 0);
  for (int length = 1; length <= l; length++) {
    for (int right = 0; right < s.size(); right++) {
      int r = right + length - 1;
      if (r >= s.size()) break;
      if (s[right] != s[r]) continue;
      if (right == r) {
        dp[r][r] = 1;
      } else if (length == 2) {
        dp[right][r] = 2;
      } else if (dp[right + 1][r - 1] > 0) {
        int haf = length / 2;
        int ml = right + haf - 1;
        int mr = r - haf + 1;
        dp[right][r] = 1 + min(dp[right][ml], dp[mr][r]);
      }
      kk[dp[right][r]]++;
    }
  }
  for (int i = l; i >= 1; i--) {
    kk[i - 1] = kk[i] + kk[i - 1];
  }
  for (int i = 1; i <= l; i++) {
    string pt = to_string(kk[i]) + " ";
    cout << pt;
  }
}
