//poj 1200 Crazy Search (hash)
/*
这题一看就是hash,但是没有给数据范围,只有一个结果16M的提示,这就让我很难办了。
交了很多遍都RE,后来学别人把有数组瞎开到老大,又WA了N遍,后来才发现竟是cmp写错了,
呜呼哀哉!
PS: 貌似数据很弱,本题的算法很粗糙都能63MS过,而且好像只有小写字母,未考证。
*/
#include <iostream>
#include <algorithm>
using namespace std;
const int MOD = 11131071;
char str[20000000]; //能开多大开多大,哈哈!~~
int ans;
struct node
{
int val; //记录字符串在str中的起点
int next;
}h[MOD];
int p[MOD],c;
int n,m;
int ELFhash(char *key)
{ unsigned long h=0;
for (int i=0;i<n;i++)
{ h=(h<<4)+*(key+i);
unsigned long g=h&0Xf0000000L;
if(g) h^=g>>24;
h&=~g;
}
return h%MOD;
}
int cmp(int i,int j)
{
for (int k=0;k<n;k++)
if (str[i+k]!=str[j+k]) return 0;
return 1;
}
void check(int hash,int j)
{
for (int i=p[hash];i;i=h[i].next)
{
if (cmp(h[i].val,j)) return ;
}
h[++c].next=p[hash];
h[c].val=j;
p[hash]=c;
++ans;
}
int main()
{
scanf("%d%d",&n,&m);
scanf("%s",str);
ans=c=0;
for (int i=0;str[i+n-1];++i)
{
check(ELFhash(str+i),i);
}
printf("%d/n",ans);
system("pause");
return 0;
}