#include <cstdio>
#define MAXM 3027197
#define MAXF 75025
char s[MAXM + 2];
char v[2][MAXF], dv[2];
int p1, l1, p2, l2, pr1, lr1, pr2, lr2;
inline void concat(int a, int b){
int i;
for(i = 0; i < dv[b]; i++){
v[a][dv[a] + i] = v[b][i];
}
dv[a] += dv[b];
}
inline char maimic(int p1, int l1, int p2, int l2){
int i;
for(i = 0; i < l1 && i < l2; i++){
if(s[p1 + i] < s[p2 + i])
return 1;
if(s[p1 + 1] > s[p2 + i])
return 0;
}
if(l1 < l2)
return 1;
return 0;
}
inline char verif(int a, int b, int n, int l){
if(n & 1){
p1 = 0;
l1 = a;
p2 = a;
l2 = b;
}
else{
p1 = b;
l1 = a;
p2 = 0;
l2 = b;
}
int i, j, k;
j = 0;
for(i = 0; i < dv[l]; i++){
if(v[l][i] == 0){
for(k = 0; k < l1; k++)
if(s[j++] != s[p1 + k])
return 0;
}
else{
for(k = 0; k < l2; k++){
if(s[j++] != s[p2 + k])
return 0;
}
}
}
return 1;
}
int main(){
FILE *in = fopen("lampa.in", "r");
int n, m, i, j, a, b, l;
char g = 0;
fscanf(in, "%d%d ", &n, &m);
fgets(s, MAXM + 2, in);
fclose(in);
v[0][0] = 0;
v[1][0] = 1;
dv[0] = dv[1] = 1;
for(i = 2; i < n; i++){
concat(i & 1, !(i & 1));
if(i == n - 2){
a = dv[!(i & 1)];
b = dv[i & 1];
}
}
l = !(i & 1);
for(i = 1; i * b < m; i++){
j = (m - i * b) / a;
if(i * b + j * a == m){
if(verif(j, i, n, l)){
if(!g || (g && maimic(p1, l1, pr1, lr1))){
g = 1;
pr1 = p1;
lr1 = l1;
pr2 = p2;
lr2 = l2;
}
}
}
}
FILE *out = fopen("lampa.out", "w");
if(!g)
fprintf(out, "0");
else{
for(i = pr1; i < pr1 + lr1; i++)
fputc(s[i], out);
fputc('\n', out);
for(i = pr2; i < pr2 + lr2; i++)
fputc(s[i], out);
fputc('\n', out);
}
fclose(out);
return 0;
}