program a;
var t:ansistring;
j,k:longint;
next:array[0..100] of longint;
procedure get_next;
begin
j:=1; k:=0; next[1]:=0;
while j<length(t) do
if (k=0) or (t[j]=t[k]) then
begin
j:=j+1; k:=k+1; next[j]:=k;
end
else
k:=next[k];
end;
begin
readln(t);
get_next;
for j:=1 to length(t) do
write(next[j],' ');
end.
/**************************************************************
Problem: 2151
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/