#include <bits/stdc++.h>
#define F0R(i, a) for(int i = 0; i < (a); i++)
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define R0F(i, a) for(int i = (a) - 1; i >= 0; i--)
#define ROF(i, a, b) for(int i = (b) - 1; i >= (a); i--)
#define ran() (rand() & 0x7FFF)
#define rand31() ((ran() << 16) | (ran() << 1) | (ran() & 1))
#define rand32() ((ran() << 17) | (ran() << 2) | (ran() & 3))
#define rand63() (((ll)ran() << 48) | ((ll)ran() << 33) | ((ll)ran() << 18) | ((ll)ran() << 3) | ((ll)ran() & 7))
#define rand64() (((ll)ran() << 49) | ((ll)ran() << 34) | ((ll)ran() << 19) | ((ll)ran() << 4) | ((ll)ran() & 15))
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define MT make_tuple
#define UB upper_bound
#define LB lower_bound
#define X real()
#define Y imag()
#define PI acos(-1)
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
#define SQ(x) ((x) * (x))
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<pii> vpii;
typedef vector<ll> vll;
typedef vector<ull> vul;
typedef complex<ld> point;
typedef complex<ld> cld;
typedef vector<cld> vcld;
vi z(string s) {
int N = s.length(); s += '#';
vi ans(N); ans[0] = N;
while (s[1+ans[1]] == s[ans[1]]) ans[1] ++;
int L = 1, R = ans[1];
FOR(i,2,N) {
if (i <= R) ans[i] = min(R-i+1,ans[i-L]);
while (s[i+ans[i]] == s[ans[i]]) ans[i] ++;
if (i+ans[i]-1 > R) L = i, R = i+ans[i]-1;
}
return ans;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
while(!cin.eof()) {
string p, s;
getline(cin, p);
getline(cin, s);
vi v = z(p + "&" + s);
vi r;
F0R(i, sz(v)) if(v[i] == sz(p)) r.PB(i - sz(p) - 1);
F0R(i, sz(r)) {
if(i > 0) cout << " ";
cout << r[i];
}
cout << "\n";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEYwUihpLCBhKSBmb3IoaW50IGkgPSAwOyBpIDwgKGEpOyBpKyspCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKTsgaSA8IChiKTsgaSsrKQojZGVmaW5lIFIwRihpLCBhKSBmb3IoaW50IGkgPSAoYSkgLSAxOyBpID49IDA7IGktLSkKI2RlZmluZSBST0YoaSwgYSwgYikgZm9yKGludCBpID0gKGIpIC0gMTsgaSA+PSAoYSk7IGktLSkKCiNkZWZpbmUgcmFuKCkgKHJhbmQoKSAmIDB4N0ZGRikKI2RlZmluZSByYW5kMzEoKSAoKHJhbigpIDw8IDE2KSB8IChyYW4oKSA8PCAxKSB8IChyYW4oKSAmIDEpKQojZGVmaW5lIHJhbmQzMigpICgocmFuKCkgPDwgMTcpIHwgKHJhbigpIDw8IDIpIHwgKHJhbigpICYgMykpCiNkZWZpbmUgcmFuZDYzKCkgKCgobGwpcmFuKCkgPDwgNDgpIHwgKChsbClyYW4oKSA8PCAzMykgfCAoKGxsKXJhbigpIDw8IDE4KSB8ICgobGwpcmFuKCkgPDwgMykgfCAoKGxsKXJhbigpICYgNykpCiNkZWZpbmUgcmFuZDY0KCkgKCgobGwpcmFuKCkgPDwgNDkpIHwgKChsbClyYW4oKSA8PCAzNCkgfCAoKGxsKXJhbigpIDw8IDE5KSB8ICgobGwpcmFuKCkgPDwgNCkgfCAoKGxsKXJhbigpICYgMTUpKQoKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBNVCBtYWtlX3R1cGxlCiNkZWZpbmUgVUIgdXBwZXJfYm91bmQKI2RlZmluZSBMQiBsb3dlcl9ib3VuZAojZGVmaW5lIFggcmVhbCgpCiNkZWZpbmUgWSBpbWFnKCkKCiNkZWZpbmUgUEkgYWNvcygtMSkKCiNkZWZpbmUgc3ooeCkgKChpbnQpKHgpLnNpemUoKSkKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksICh4KS5lbmQoKQojZGVmaW5lIFNRKHgpICgoeCkgKiAoeCkpCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgdmVjdG9yPHBpaT4gdnBpaTsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsbDsKdHlwZWRlZiB2ZWN0b3I8dWxsPiB2dWw7CnR5cGVkZWYgY29tcGxleDxsZD4gcG9pbnQ7CnR5cGVkZWYgY29tcGxleDxsZD4gY2xkOwp0eXBlZGVmIHZlY3RvcjxjbGQ+IHZjbGQ7Cgp2aSB6KHN0cmluZyBzKSB7CiAgICBpbnQgTiA9IHMubGVuZ3RoKCk7IHMgKz0gJyMnOwogICAgdmkgYW5zKE4pOyBhbnNbMF0gPSBOOwogICAgd2hpbGUgKHNbMSthbnNbMV1dID09IHNbYW5zWzFdXSkgYW5zWzFdICsrOwogICAgCiAgICBpbnQgTCA9IDEsIFIgPSBhbnNbMV07CiAgICBGT1IoaSwyLE4pIHsKICAgICAgICBpZiAoaSA8PSBSKSBhbnNbaV0gPSBtaW4oUi1pKzEsYW5zW2ktTF0pOwogICAgICAgIHdoaWxlIChzW2krYW5zW2ldXSA9PSBzW2Fuc1tpXV0pIGFuc1tpXSArKzsKICAgICAgICBpZiAoaSthbnNbaV0tMSA+IFIpIEwgPSBpLCBSID0gaSthbnNbaV0tMTsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgd2hpbGUoIWNpbi5lb2YoKSkgewogICAgICAgIHN0cmluZyBwLCBzOwogICAgICAgIGdldGxpbmUoY2luLCBwKTsKICAgICAgICBnZXRsaW5lKGNpbiwgcyk7CiAgICAgICAgdmkgdiA9IHoocCArICImIiArIHMpOwogICAgICAgIHZpIHI7CiAgICAgICAgRjBSKGksIHN6KHYpKSBpZih2W2ldID09IHN6KHApKSByLlBCKGkgLSBzeihwKSAtIDEpOwogICAgICAgIEYwUihpLCBzeihyKSkgewogICAgICAgICAgICBpZihpID4gMCkgY291dCA8PCAiICI7CiAgICAgICAgICAgIGNvdXQgPDwgcltpXTsKICAgICAgICB9CiAgICAgICAgY291dCA8PCAiXG4iOwogICAgfSAgIAp9