#include<stdio.h>
#include<string.h>
long int n,m,i,a,b,aa,bb,nn,lung[30],sol,
ni[10]={8,8,10,9,7,6,25,14,15,17},
mi[10]={523,4200,5001,8910,46189,88600,346468,590005,1010860,3027197},
ns[10]={5,40,7,32,1155,5906,1,17,12,6},
pa[10]={2,5,5,15,1,5,4,167,7,26},
pb[10]={39,320,144,415,5773,17717,5,2429,2677,3051},
sa[10]={13,13,34,21,8,5,0,233,377,987},
sb[10]={-8,-8,-21,-13,-5,-3,0,-144,-223,-610};
char cuv[3100000],*p1,*p2,caux,caux1,
solpa[50000],solpb[50000],sola[50000],solb[50000];
long int ok(long int nnn);
long int comp(long int poz1,long int poz2,long int nrcar);
int main()
{
FILE *f,*g;f=fopen("lampa.in","r");g=fopen("lampa.out","w");
fscanf(f,"%ld%ld",&n,&m);
fscanf(f,"%s",cuv);
for(i=0;i<10;i++)if(m==mi[i])break;
a=pa[i];b=pb[i];aa=sa[i];bb=sb[i];nn=ns[i];
for(i=1;i<=nn;i++)
{ lung[1]=a;lung[2]=b;
for(i=3;i<=n;i++)lung[i]=lung[i-2]+lung[i-1];
if(ok(n))
{ p1=&cuv[0];caux1=cuv[a+b];cuv[a+b]=0;
if(n%2)
{ p2=&cuv[a];
caux=cuv[a];cuv[a]=0;
strcpy(solpa,p1);solpa[a]=0;
cuv[a]=caux;
strcpy(solpb,p2);solpb[b]=0;
if(!sol||(strcmp(solpa,sola)<0))
{ strcpy(sola,solpa);strcpy(sola,solpa);sola[a]=0;solb[b]=0;}
sol++;
}
else
{ p2=&cuv[b];
strcpy(solpb,p2);solpb[b]=0;
caux=cuv[b];cuv[b]=0;
strcpy(solpa,p1);solpa[a]=0;
cuv[b]=caux;
if(!sol||(strcmp(solpa,sola)<0))
{ strcpy(sola,solpa);strcpy(sola,solpa);sola[a]=0;solb[b]=0;}
sol++;
}
cuv[a+b]=caux1;
}
a+=aa;b+=bb;
}
if(sol){fprintf(g,"%s\n",sola);fprintf(g,"%s\n",solb);}
else fprintf(g,"0\n");
fcloseall();
return 0;
}
long int ok(long int nnn)
{
if(nnn<=3)return 1;
if(nnn==4)
{ if(comp(0,a+b,b))return 1;
return 0;
}
if(ok(nnn-2))
if(comp(0,lung[nnn-1],lung[nnn-2]))
if(comp(lung[nnn-4],lung[nnn-2],lung[nnn-3]))
return 1;
return 0;
}
long int comp(long int poz1,long int poz2,long int nrcar)
{ long int jj;
for(jj=0;jj<nrcar;jj++)
if(cuv[poz1+jj]!=cuv[poz2+jj])
return 0;
return 1;
}