program luck;
{ constraints }
const
MAXN = 200;
MAXC = 10000;
INF = 4*MAXC;
{ input data }
var
N,C,i,j,k: longint;
M10, D10 : array[1..4] of longint; { powers of 10 to extract digits by mod or div }
L : array[1..MAXN] of longint; { lucky numbers }
pfx : array[1..MAXN] of array[1..MAXN] of longint; { how overlapping numbers are }
good : array[1..MAXC] of array[1..MAXN] of longint; { good[k,i] = how short can k numbers starting from L[i] be }
mtch : array[1..MAXC] of array[1..MAXN] of longint; { mtch[k,i] = next number to obtain good[k,i] }
best : array[1..MAXC] of longint; { best[k] = best start for k numbers }
begin
{
uncomment the following lines if you want to read/write from files
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
readln(N, C);
for i:=1 to N do begin
read(L[i]);
good[1,i] := 4; { L[i] has 4 digits }
mtch[1,i] := -1; { nothing after L[i] }
end;
readln();
best[1] := 1; { all equivalent for k=1 }
M10[1] := 10;
M10[2] := 100;
M10[3] := 1000;
M10[4] := 10000;
D10[1] := 1000;
D10[2] := 100;
D10[3] := 10;
D10[4] := 1;
for i:=1 to N do for j:=1 to N do begin
pfx[i,j] := 4; { no overlap }
for k:=1 to 3 do if L[i] mod M10[k] = L[j] div D10[k] then
pfx[i,j] := 4-k; { overlap found }
end;
for k:=2 to C-3 do begin
best[k] := 1;
for i:=1 to N do begin
good[k,i] := INF;
for j:=1 to N do if pfx[i,j] + good[k-1,j] < good[k,i] then begin
good[k,i] := pfx[i,j] + good[k-1,j];
mtch[k,i] := j; { use j after i }
end;
if good[k,i] < good[k,best[k]] then
best[k] := i; { use i for k numbers }
end;
if good[k,best[k]] >= C then break; { no way to be within C digits for larger k }
end;
if good[k,best[k]] > C then k := k-1;
i := best[k]; { starting number }
for j:=1 to C-good[k,best[k]] do write(0); { padding digits to reach length C }
for k:=k downto 2 do begin
{ write first digits of L[i] }
for j:=1 to pfx[i,mtch[k,i]] do
write((L[i] div D10[j]) mod 10);
i := mtch[k,i] { next number }
end;
writeln(L[i]);
end.
cHJvZ3JhbSBsdWNrOwp7IGNvbnN0cmFpbnRzIH0KY29uc3QKICAgIE1BWE4gPSAyMDA7CiAgICBNQVhDID0gMTAwMDA7CiAgICBJTkYgID0gNCpNQVhDOwoKeyBpbnB1dCBkYXRhIH0KdmFyCiAgICBOLEMsaSxqLGs6IGxvbmdpbnQ7CiAgICBNMTAsIEQxMCA6IGFycmF5WzEuLjRdIG9mIGxvbmdpbnQ7ICAgICAgICAgICAgICAgICAgICAgIHsgcG93ZXJzIG9mIDEwIHRvIGV4dHJhY3QgZGlnaXRzIGJ5IG1vZCBvciBkaXYgfQogICAgTCAgICAgICAgOiBhcnJheVsxLi5NQVhOXSBvZiBsb25naW50OyAgICAgICAgICAgICAgICAgICB7IGx1Y2t5IG51bWJlcnMgfQogICAgcGZ4ICAgICAgOiBhcnJheVsxLi5NQVhOXSBvZiBhcnJheVsxLi5NQVhOXSBvZiBsb25naW50OyB7IGhvdyBvdmVybGFwcGluZyBudW1iZXJzIGFyZSB9CiAgICBnb29kICAgICA6IGFycmF5WzEuLk1BWENdIG9mIGFycmF5WzEuLk1BWE5dIG9mIGxvbmdpbnQ7IHsgZ29vZFtrLGldID0gaG93IHNob3J0IGNhbiBrIG51bWJlcnMgc3RhcnRpbmcgZnJvbSBMW2ldIGJlIH0KICAgIG10Y2ggICAgIDogYXJyYXlbMS4uTUFYQ10gb2YgYXJyYXlbMS4uTUFYTl0gb2YgbG9uZ2ludDsgeyBtdGNoW2ssaV0gPSBuZXh0IG51bWJlciB0byBvYnRhaW4gZ29vZFtrLGldIH0KICAgIGJlc3QgICAgIDogYXJyYXlbMS4uTUFYQ10gb2YgbG9uZ2ludDsgICAgICAgICAgICAgICAgICAgeyBiZXN0W2tdICAgPSBiZXN0IHN0YXJ0IGZvciBrIG51bWJlcnMgfQoKYmVnaW4KewogICAgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZXMgaWYgeW91IHdhbnQgdG8gcmVhZC93cml0ZSBmcm9tIGZpbGVzCiAgICBhc3NpZ24oaW5wdXQsICAnaW5wdXQudHh0Jyk7ICByZXNldChpbnB1dCk7CiAgICBhc3NpZ24ob3V0cHV0LCAnb3V0cHV0LnR4dCcpOyByZXdyaXRlKG91dHB1dCk7Cn0KCiAgICByZWFkbG4oTiwgQyk7CiAgICBmb3IgaTo9MSB0byBOIGRvIGJlZ2luCiAgICAgICAgcmVhZChMW2ldKTsKICAgICAgICBnb29kWzEsaV0gOj0gNDsgIHsgTFtpXSBoYXMgNCBkaWdpdHMgfQogICAgICAgIG10Y2hbMSxpXSA6PSAtMTsgeyBub3RoaW5nIGFmdGVyIExbaV0gfQogICAgZW5kOwogICAgcmVhZGxuKCk7CiAgICBiZXN0WzFdIDo9IDE7IHsgYWxsIGVxdWl2YWxlbnQgZm9yIGs9MSB9CiAgICBNMTBbMV0gOj0gMTA7CiAgICBNMTBbMl0gOj0gMTAwOwogICAgTTEwWzNdIDo9IDEwMDA7CiAgICBNMTBbNF0gOj0gMTAwMDA7CiAgICBEMTBbMV0gOj0gMTAwMDsKICAgIEQxMFsyXSA6PSAxMDA7CiAgICBEMTBbM10gOj0gMTA7CiAgICBEMTBbNF0gOj0gMTsKICAgIGZvciBpOj0xIHRvIE4gZG8gZm9yIGo6PTEgdG8gTiBkbyBiZWdpbgogICAgICAgIHBmeFtpLGpdIDo9IDQ7IHsgbm8gb3ZlcmxhcCB9CiAgICAgICAgZm9yIGs6PTEgdG8gMyBkbyBpZiBMW2ldIG1vZCBNMTBba10gPSBMW2pdIGRpdiBEMTBba10gdGhlbgogICAgICAgICAgICBwZnhbaSxqXSA6PSA0LWs7IHsgb3ZlcmxhcCBmb3VuZCB9CiAgICBlbmQ7CiAgICBmb3Igazo9MiB0byBDLTMgZG8gYmVnaW4KICAgICAgICBiZXN0W2tdIDo9IDE7CiAgICAgICAgZm9yIGk6PTEgdG8gTiBkbyBiZWdpbgogICAgICAgICAgICBnb29kW2ssaV0gOj0gSU5GOwogICAgICAgICAgICBmb3Igajo9MSB0byBOIGRvIGlmIHBmeFtpLGpdICsgZ29vZFtrLTEsal0gPCBnb29kW2ssaV0gdGhlbiBiZWdpbgogICAgICAgICAgICAgICAgZ29vZFtrLGldIDo9IHBmeFtpLGpdICsgZ29vZFtrLTEsal07CiAgICAgICAgICAgICAgICBtdGNoW2ssaV0gOj0gajsgeyB1c2UgaiBhZnRlciBpIH0KICAgICAgICAgICAgZW5kOwogICAgICAgICAgICBpZiBnb29kW2ssaV0gPCBnb29kW2ssYmVzdFtrXV0gdGhlbgogICAgICAgICAgICAgICAgYmVzdFtrXSA6PSBpOyB7IHVzZSBpIGZvciBrIG51bWJlcnMgfQogICAgICAgIGVuZDsKICAgICAgICBpZiBnb29kW2ssYmVzdFtrXV0gPj0gQyB0aGVuIGJyZWFrOyB7IG5vIHdheSB0byBiZSB3aXRoaW4gQyBkaWdpdHMgZm9yIGxhcmdlciBrIH0KICAgIGVuZDsKICAgIGlmIGdvb2RbayxiZXN0W2tdXSA+IEMgdGhlbiBrIDo9IGstMTsKICAgIGkgOj0gYmVzdFtrXTsgeyBzdGFydGluZyBudW1iZXIgfQogICAgZm9yIGo6PTEgdG8gQy1nb29kW2ssYmVzdFtrXV0gZG8gd3JpdGUoMCk7IHsgcGFkZGluZyBkaWdpdHMgdG8gcmVhY2ggbGVuZ3RoIEMgfQogICAgZm9yIGs6PWsgZG93bnRvIDIgZG8gYmVnaW4KICAgICAgICB7IHdyaXRlIGZpcnN0IGRpZ2l0cyBvZiBMW2ldIH0KICAgICAgICBmb3Igajo9MSB0byBwZnhbaSxtdGNoW2ssaV1dIGRvCiAgICAgICAgICAgIHdyaXRlKChMW2ldIGRpdiBEMTBbal0pIG1vZCAxMCk7CiAgICAgICAgaSA6PSBtdGNoW2ssaV0geyBuZXh0IG51bWJlciB9CiAgICBlbmQ7CiAgICB3cml0ZWxuKExbaV0pOwplbmQuCg==