#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAXN = 1000000;

int main() {
  char s[MAXN + 1];
  scanf("%s", s); int n = strlen(s);

  int z[MAXN];

  int l = 0;
  int r = 0;
  for (int i = 1; i < n; i++) {
    if (i < r)
      z[i] = min(z[i - l], r - i);
    else
      z[i] = 0;
    while (s[z[i]] == s[i + z[i]])
      z[i]++;
    l = i;
    r = i + z[i];
  }

  for (int i = 0; i < n; i++)
    printf("%d ", z[i]);
}
