#include<bits/stdc++.h>
using namespace std;
const long long P=2e18+7;
long long Hash1[1000010];
long long Hash2[1000010];
long long base[1000010];
void Init(){
base[0]=1;
for(int i=1;i<=1e6;i++){
base[i]=base[i-1]%P*26%P;
}
}
int main(){
Init();
int n,m;
scanf("%d%d",&n,&m);
string s,t;
cin>>s>>t;
for(int i=n-1;i>=0;i--){
if(i!=n-1){
Hash1[n-i-1]=Hash1[n-i-2];
}
Hash1[n-i-1]+=(s[i]-'a'+1)%P*base[n-i-1]%P;
}
for(int i=m-1;i>=0;i--){
if(i!=m-1){
Hash2[m-i-1]=Hash2[m-i-2];
}
Hash2[m-i-1]+=(t[i]-'a'+1)*base[m-i-1];
}
int ret=0;
for(int i=m-1;i<n;i++){
long long ans=Hash1[i];
if(ans!=m-1){
ans-=Hash1[i-m];
ans=ans/base[i-m+1];
}
cout<<ans<<endl;
if(ans==Hash2[m-1]){
ret++;
i+=m-1;
}
}
printf("%d",ret);
}