/*
ZADATAK: proizvod
JEZIK: C++
*/
#include <stdio.h>
#include <algorithm>
#include <math.h>
#define min(a,b) (a>b?b:a)

using namespace std;

int n,m;
int ar[100001];
int r[50001],l[50001];
void load(){
     FILE *fin = fopen("proizvod.in","r");
     char c;
     fscanf(fin, "%d %d ", &n,&m);
     for(int i=0; i<n; i++){
             fscanf(fin, "%c", &ar[i]);
             ar[i]=(ar[i]-48);
     }
     fclose(fin);
     sort(&ar[0], &ar[n]);
}

void addcfr(unsigned long long &num, short cfr){
     num*=10;
     num+=cfr;
}

int cfrnum(unsigned long long num){
    int t=0;
    while(num>0){
      t++;
      num/=10;
    }
    return t;
}

int mpow(int num, int step){
    int r=1;
    while(step>0){
      r*=num;
      step--;
    }
    return r;
}


void solve(){
     bool mode=false;
     int lnum=(n>>1), rnum=(n>>1), p=0;
     for(int i= n-1 ; i>0; i-=2){
             if(!mode){
               l[p]=ar[i];
               r[p++]=ar[i-1];
             }
             else{
                r[p]=ar[i];
                l[p++]=ar[i-1];
             }
             mode = !mode;
     }
     if(n%2==1){
        if(!mode){
           l[p]=ar[0];
           lnum++;
        }
        else{
           r[p]=ar[0];
           rnum++;
        }
     }
     unsigned long long a=0,b=0;
     for(int i= min(m,lnum); i>0 ; i--)
        addcfr(a,l[lnum-i]);
     for(int i= min(m, rnum); i>0; i--)
        addcfr(b, r[rnum-i]);
     a%=mpow(10,m);
     b%=mpow(10,m);     
     a*=b;
     FILE* fout=fopen("proizvod.out","w");
     for(int i=0; i<m-cfrnum(a); fprintf(fout,"0"),i++);
     fprintf(fout,"%ld\n", a%mpow(10,m));
     fclose(fout);
}
int main(int argc, char *argv[])
{   
    load();
    solve();
    return 0;
}
