对每个子串进行双hash,set<pair<long long,long long> >hahaha;用来去重(排序)统计个数
include<bits/stdc++.h>
using namespace std;
const int q=31,e=131,w=998244353,r=1e9+7;
long long ha[200010]={1},kao[200010]={1};
char mp[200010];
set<pair<long long,long long> >hahaha;
int main(){
int n,m;
scanf("%d%d",&n,&m);
scanf("%s",mp+1);
for(int z=1;z<=m;++z) ha[z]=ha[z-1]*q%w;
for(int z=1;z<=m;++z) kao[z]=kao[z-1]*e%r;
long long a=0,b=0;
for(int z=1;z<=m;++z){
a=(a*q%w+mp[z]-'a')%w;
b=(b*e%r+mp[z]-'a')%r;
}
hahaha.insert(make_pair(a,b));
for(int z=m+1;z<=n;++z){
a=((a-(mp[z-m]-'a')*ha[m-1]%w+w)*q+mp[z]-'a')%w;
b=((b-(mp[z-m]-'a')*kao[m-1]%r+r)*e+mp[z]-'a')%r;
hahaha.insert(make_pair(a,b));
}
printf("%d\n",hahaha.size());
return 0;
}