char s[1000007], t[1000007];
int nxt[1000007], j = 0;
int main()
{
cin >> (s + 1) >> (t + 1);
int lens = strlen(s + 1), lent = strlen(t + 1);
for(int i = 2; i <= lent; i++)
{
while(j && t[i] != t[j + 1]) j = nxt[j];
if(t[i] == t[j + 1]) j++;
nxt[i] = j;
}
j = 0;
for(int i = 1; i <= lens; i++)
{
while(j && s[i] != t[j + 1]) j = nxt[j];
if(s[i] == t[j + 1]) j++;
if(j == lent)
{
cout << i - lent + 1 << endl;
j = nxt[j];
}
}
}