/*
ZADATAK: proizvod
JEZIK: c++
*/

#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;

const long long MaxN = 100010;

long long N, M , br;

long long D[MaxN];
long long A[MaxN], B[MaxN];

FILE *inFile;
FILE *outFile;

void Init(){
	inFile = fopen("proizvod.in", "r");
	fscanf(inFile , "%d %d" , &N , &M);
	//scanf("%d %d" , &N , &M);
	char tmp;
	fscanf(inFile ,"%c", &tmp);
	fscanf(inFile ,"%c", &tmp);
	//scanf(tmp);
	char ch;
	for (long long i = 0 ; i < N ; i++){
		fscanf(inFile , "%c" , &ch);
		//scanf("%c" , &ch);
		D[i] = (long long)(ch) - (long long)('0');
	}
	fclose(inFile);
}

long long max(long long x , long long y){
	if (x > y)
		return x;
	else
		return y;
}

long long NumDig(long long x){
	long long retVal = 0;
	while (x > 0){
		retVal++;
		x = (long long)(x / 10);
	}
	return retVal;
}

void Ispis(long long a){
	if (br > 0){
		br--;
		Ispis((long long)(a / 10));
		//printf("%ld" , a % 10);
		fprintf(outFile , "%ld" , a % 10);
	}
}

void Solve(){
	sort(&D[0] , &D[N]);
	long long n = N - 1;
	A[0] = D[n];
	n--;
	B[0] = D[n];
	n--;
	bool prvi = false;
	long long idxa = 0 , idxb = 0;
	for (long long i = n ; i > -1 ; i--){
		if (prvi){
			idxa++;
			A[idxa] = D[i];
		}
		else{
			idxb++;
			B[idxb] = D[i];
		}
		prvi ^= true;
	}

/*	for (long long i = 0 ; i <= idxa ; i++)
		cout << A[i];
	cout << endl;
	for (long long i = 0 ; i <= idxb ; i++)
		cout << B[i];
	cout << endl;*/
	
	long long x = 0;
	for (long long i = max(0 , idxa - 8) ; i <= idxa ; i++)
		x = 10 * x + A[i];
	
	long long y = 0;
	for (long long i = max(0 , idxb - 8) ; i <= idxb ; i++)
		y = 10 * y + B[i];

	long long rez = x * y;
	
	outFile = fopen("proizvod.out", "w");
	
	br = M;
	for (long long i = 0 ; i < M - NumDig(rez) ; i++ , br--)
		//printf("0");
		fprintf(outFile , "0");
		
	Ispis(rez);
	fprintf(outFile , "\n");
	fclose(outFile);
	//cin >> N;
}

int main(){
	Init();
	Solve();
	return 0;
}
