#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int mod1=10000003;
const int mod2=10000007;
const int alpha=62;
vector<int> ans;
string a,b;
int put1,put2,m1,m2,c1,c2,i,len;
inline int conv(char c)
{
if(c>='A'&&c<='Z') return (26+c-'A');
if(c>='a'&&c<='z') return (c-'a');
return 52+c-'0';
}
int main()
{
ifstream f("strmatch.in");
ofstream g("strmatch.out");
f>>a>>b;put1=1;put2=1;
for(i=0;i<a.size();i++)
{
m1=(m1*alpha+conv(a[i]))%mod1;
m2=(m2*alpha+conv(a[i]))%mod2;
put1=(put1*alpha)%mod1;
put2=(put2*alpha)%mod2;
}
len=a.size();
for(i=0;i<b.size();i++)
{
c1=(c1*alpha+conv(b[i]))%mod1;
c2=(c2*alpha+conv(b[i]))%mod2;
if(i>=len)
{
c1-=(put1*conv(b[i-len]))%mod1;
c2-=(put2*conv(b[i-len]))%mod2;
if(c1<0) c1+=mod1;
if(c2<0) c2+=mod2;
}
if(i>=len-1)
{
if(m1==c1&&m2==c2)
ans.push_back(i-len+1);
}
}
g<<ans.size()<<'\n';
for(i=0;i<min((int)ans.size(),1000);i++)
g<<ans[i]<<' ';
return 0;
}