#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using i128=__int128;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
using db = double;
using ldb = long double;
#define F first
#define S second
vector<int> kmp(string s) {
    int n = s.size();
    vector<int> f(n);
    for (int i = 1, j = 0; i < n; i++) {
        while (j && s[i] != s[j]) j = f[j-1];
        if (s[i] == s[j]) j++;
        f[i] = j;
    }
    return f;
}

void solve(){
    string a,b;cin>>a>>b;
    vector<int> next=kmp(b);
    int n=a.size(),m=b.size(),ans=-1;
    int j=0;
    for(int i=0;i<n;i++){
        while(j&&a[i]!=b[j]) j=next[j-1];
        if(a[i]==b[j]) j++;
        if(j==m){
            cout<<i+2-m<<"\n";
        }
    }
    for(int i=0;i<m;i++){
        cout<<next[i]<<" ";
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr),cout.tie(nullptr);
    int t=1;
    // cin>>t;
    while(t--) solve();
    return 0;
}