#include <stdio.h>
#include <string.h>
#define Nmax 3030000
#define Lmax 320000
char S[Nmax]; // sirul initial
char f2[Lmax]; // sirul cum trebuie ca arate gen abbab
char A[Lmax/2],B[Lmax/2]; // cuvintele initiale
long n,m,i,lga,lgb,MA,MB;
long fn1,fn2;
int ok;
void fa_fib(){
long f0,f1,f2,nr;
for(f0=f1=1, nr=2; nr<n-1; f2=f0+f1, f0=f1,f1=f2,++nr);
fn1=f1; fn2=f0;
}
void fa_sirAB(long n){
char f0[120000],f1[120000];
long nr;
f0[0]='a'; f1[0]='b'; nr=2;
while(nr<n){
strcpy(f2,f0);
strcat(f2,f1);
strcpy(f0,f1);
strcpy(f1,f2);
nr++;
}
}
char *ps, *pa, *pb, *p;
int vezi(long lga,long lgb){
long i,z;
memset(A,'\0',MA);
memset(B,'\0',MB);
if(n%2==1){ // incepe cu a
strncpy(A,S,lga);
strncpy(B,S,lga+lgb);
pa=&A[0];
pb=&B[0]+lga;
}
else{ // incepe cu b
strncpy(B,S,lgb);
strncpy(A,S,lga+lgb);
pa=&A[0]+lgb;
pb=&B[0];
}
int ok=1; ps=&S[0];
for(i=0,z=strlen(f2);i<z && ok;++i){
if(f2[i]=='a'){
p=strstr(ps,pa);
if(ps!=p) ok=0;
ps=ps+lga;
}
else{
p=strstr(ps,pb);
if(ps!=p) ok=0;
ps=ps+lgb;
}
}
return ok;
}
int main(){
freopen("lampa.in","r",stdin);
freopen("lampa.out","w",stdout);
scanf("%ld%ld",&n,&m);
scanf("%s",&S);
fa_fib();
fa_sirAB(n);
MA=sizeof(A); if(m/fn2 < MA) MA=m/fn2;
MB=sizeof(B); if(m/fn1 < MB) MB=m/fn1;
lga=1; ok=0;
while(lga * fn2 <m && !ok){
if( (m-lga*fn2)%fn1==0 ){
lgb=(m-lga*fn2)/fn1;
ok=vezi(lga,lgb);
}
lga++;
}
if(ok){ printf("%s\n",pa); printf("%s\n",pb); }
else printf("0\n");
fclose(stdin); fclose(stdout);
return 0;
}