#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 500010
char st[N];
struct {
int len, fail, p[26], dp;
}a[N];
int tot = 1;
int main() {
int i, j;
a[0].dp = a[1].dp = 0;
a[0].len = 0, a[1].len = -1;
a[0].fail = 1;
int la = 0, ls = 0;
while(1) {
i++;
scanf("%c", &st[i]);
if(st[i] < 'a' || st[i] > 'z') break;
st[i] = (st[i] - 97 + ls) % 26 + 97;
int x = la;
while(st[i] != st[i - 1 - a[x].len]) x = a[x].fail;
if(!a[x].p[st[i] - 'a']) a[x].p[st[i] - 'a'] = ++tot;
la = a[x].p[st[i] - 'a'];
a[la].len = a[x].len + 2;
if(a[la].len == 1) x = 0;
else {
x = a[x].fail;
while(st[i] != st[i - 1 - a[x].len]) x = a[x].fail;
x = a[x].p[st[i] - 'a'];
}
a[la].dp = a[x].dp + 1;
a[la].fail = x;
ls = a[la].dp;
printf("%d ", ls);
}
return 0;
}