#include<bits/stdc++.h>
using namespace std;
const int Mod=19930726,N=1000001;
char a[N];
int n,r[N],cnt[N],ans=1;
long long k,tot;
bool cmp(int a,int b){ return a>b; }
long long Pow(int x,int y)//快速幂
{
long long tmp=x,res=1;
while(y){
if(y&1){
res=res*tmp%Mod;
}
y>>=1;
tmp=tmp*tmp%Mod;
}
return res;
}
int main()
{
cin>>n>>k;
scanf(" %s",a+1);
//manacher求奇数长度回文,不插入字符
int pos=0;
r[1]=1;
for(int i=1;i<=n;i++)
{
int rpos=pos+r[pos]-1;
int iipos=pos-i;
if(i<=rpos) r[i]=min(r[iipos],rpos-i+1);
else r[i]=1;
while(i-r[i]>0&&i+r[i]<=n&&a[i-r[i]]==a[i+r[i]]) r[i]++;
if(i+r[i]-1>rpos) pos=i;
}
for(int i=1;i<=n;i++) cnt[r[i]]++;
for(int i=(n+1)>>1;i>=1;i--)
{
cnt[i]+=cnt[i+1];
if(tot+cnt[i]<k)
{
ans=(ans*Pow((i<<1)-1,cnt[i]))%Mod;
tot+=cnt[i];
}
else
{
ans=(ans*Pow((i<<1)-1,k-tot))%Mod;
tot=k;
break;
}
}
if(tot<k) cout<<-1<<endl;
else cout<<ans<<endl;
return 0;
}