#include<stdio.h>
char s[1000057],vs[1000057];
int p[1000057];long long amoup[2000057],mp,tmp;
int main()
{
int n,K;
int ci,rei=0;
long long pmp,ptmp,pres;
long long res=1;
int i,j,k;
scanf("%d %d %s",&n,&K,s);
vs[0]='!';
j=0;
for(i=1;i<n+1;++i)
vs[i]=s[i-1];
vs[i]='\n';
for(i=1;i<n+1;++i)
{
if(i<rei)
p[i]=p[2*ci-i]>rei-i?rei-i:p[2*ci-i];
else
p[i]=1;
while(vs[i-p[i]]==vs[i+p[i]])
++p[i];
++amoup[p[i]*2-1];
if(mp<p[i]*2-1)
mp=p[i]*2-1;
if(rei<i+p[i]-1)
{
ci=i;
rei=i+p[i]-1;
}
}
for(i=mp-2;i>0;i-=2)
amoup[i]+=amoup[i+2];
while(mp>0&&K)
{
tmp=amoup[mp]<K+1?amoup[mp]:K;
pmp=mp;ptmp=tmp%19930726;
pres=1;
while(ptmp)
{
if((ptmp&1)!=0)
pres=pres*pmp%19930726;
ptmp>>=1;
pmp=pmp*pmp%19930726;
}
res=res*pres%19930726;
mp-=2;
K-=tmp;
}
if(K)
printf("-1");
else
printf("%lld",res);
return 0;
}
行36一个和谐小群体女生的人数mp必须>0。