#include<bits/stdc++.h>
using namespace std;
#define for1(i,a,b) for(int i=(a);i<=(b);i++)
#define for2(i,a,b) for(int i=(a);i>=(b);i--)
typedef long long LL;
typedef pair<int,int>PII;
typedef pair<double,double>PDD;
typedef unsigned long long ULL;
typedef pair<long long,int> PLI;
const int N = 1e6+10,M=1e5+10;
const ULL base = 131;
int n,m,k;
char s[N];
ULL h[N],p[N];
unordered_map<ULL,int> mp,lst;//lst保存的是字符串上一次出现的右端点的位置,mp保存的是字符串不交出现的次数
ULL get(int l,int r)
{
if(l>r) swap(l,r);
return h[r]-h[l-1]*p[r-l+1];
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m>>k;
scanf("%s",s+1);
p[0]=1;
for1(i,1,n){
h[i]=h[i-1]*base+s[i];
p[i]=p[i-1]*base;
}
for(int i=m;i<=n;i++){
if(lst[get(i,i-m+1)]<i-m+1){
mp[get(i,i-m+1)]++;
lst[get(i,i-m+1)]=i;
}
}
int ans=0;
for(auto x:mp){
if(x.second==k) {
ans++;
}
}
cout<<ans;
return 0;
}