#include <bits/extc++.h>
#define endl '\n'
typedef long long ll;
#define int ll
using namespace std;
using namespace __gnu_cxx;
using namespace __gnu_pbds;
vector<int> Get_StringNext(string s) {
if (s[0] != '\0') {
exit(-114);
}
vector<int> nxt(s.size());
nxt[0] = -1;
int j = -1;
for (int i = 1; i < s.size(); ++i) {
while (j >= 0 && s[j + 1] != s[i]) {
j = nxt[j];
}
nxt[i] = ++j;
}
return nxt;
}
void Main() {
string s1, s2;
cin >> s1 >> s2;
int n = s1.size(), m = s2.size(), nm = n + m;
string s3 = '\0' + s2 + s1;
s1 = '\0' + s1;
s2 = '\0' + s2;
vector<int> nxt = Get_StringNext(s3);
for (int i = (m << 1ll); i <= nm; ++i) {
if (nxt[i] == m) {
cout << i - (m << 1ll) + 1 << endl;
}
}
for (int i = 1; i <= m; ++i) {
cout << nxt[i] << ' ';
}
cout << endl;
}
// #define __CP_MULTI_TEST_CASES
signed main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int t = 1;
#ifdef __CP_MULTI_TEST_CASES
cin >> t;
#endif
while (t--) {
Main();
}
return 0;
}