#include <iostream>
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream f ("strmatch.in");
ofstream g ("strmatch.out");
char text[2000001],secv[2000001];
int cnt;
int lps[2000001];
int lungimeText,lungimeSecv;
vector<int>poz;
void formare_lps()
{
int st = 0;
for(int i = 1; i<lungimeSecv; i++)
{
if(secv[i] == secv[st])
{
lps[i] = st+1;
st++;
}
else
{
while(secv[i]!=secv[st])
{
if(st == 0)
break;
st = lps[st-1];
}
if(secv[i] == secv[st])
{
lps[i] = st+1;
st++;
}
}
}
}
void verificare_secv_in_text()
{
int indice_in_secv = 0;
for(int i = 0; i<lungimeText; i++)
{
if(text[i] == secv[indice_in_secv])
{
indice_in_secv++;
if(indice_in_secv == lungimeSecv)
{
poz.push_back(i-(indice_in_secv-1));
indice_in_secv = lps[indice_in_secv-1];
}
}
else
{
if(indice_in_secv)
indice_in_secv = lps[indice_in_secv-1];
}
}
}
int main()
{
f >> secv>> text;
lungimeSecv = strlen(secv);
lungimeText = strlen(text);
formare_lps();
verificare_secv_in_text();
g<<poz.size()<< '\n';
for(int i = 0; i<poz.size(); i++)
g << poz[i]<< " ";
}