#include<iostream>
#include<stdio.h>
#include<string.h>
#include<cmath>
#include<algorithm>
#define MAXN 1000000
#define mod 19930726ll
using namespace std;
typedef long long ll;
int p[2*MAXN+100],pl,len[2*MAXN+100];
string readin()
{
char cc;
cc=getchar();
if (cc=='\n')cc=getchar();
string str="$";
while (cc!='\n'){
str+='#';str+=cc;
cc=getchar();
}
str+="#";
return str;
}
ll fpow(ll arg,int time)
{
ll ans=1;
while (time>0){
if (time&1)ans=ans*arg%mod;
arg=(arg*arg)%mod;
time>>=1;
}
return ans;
}
int main()
{
string s1;
int n,i,id,mx;
ll k;
cin>>n>>k;
s1=readin();
len[0]=0;
mx=0;id=0;
pl=0;
for (i=1;i<s1.size();i++){
if (i<mx)len[i]=min(mx-i,len[2*id-i]);
else len[i]=1;
while (s1[i-len[i]]==s1[i+len[i]])len[i]++;
if (i+len[i]>mx){id=i,mx=i+len[i];}
if (s1[i]!='#')p[++pl]=len[i]-1;
}
sort(p+1,p+pl+1);
ll sum=0,ans=1;
int last=p[pl];p[0]=0;
for (i=pl;i>=0&&sum<k;i--){
while (last>p[i]){
int length=pl-i;
if (length+sum>k)length=k-sum;
ans=ans*fpow(last,length)%mod;
last-=2;
sum+=length;
if (sum==k)break;
}
}
if (sum<k)cout<<-1<<"\n";
else cout<<ans<<"\n";
return 0;
}
P1659
https://www.luogu.com.cn/problem/P1659