#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stdlib.h>
#include <time.h>
#include <stack>
#include <map>
#include <math.h>
#include <cmath>
#include <string.h>
#include <numeric>
using namespace std;
typedef vector<int> vi ;
typedef long long ll;
#define all(x) (x).begin() , (x).end()
#define allR(x) (x).rbegin() , (x).rend()
#define pb push_back
const int N = 1e6, M=1e6+1, NN=1e8 , MX = 1e6+1;
const ll MXL=1e18 , MOD = 1e9 + 7 ;
int a[N];
map<char,int> mp;
int main(){
// freopen("input.txt", "r", stdin);
int n, k;
bool flag=0;
cin >> n >> k;
string s, ans, add, finalans;
cin >> s;
vector<pair<int, char>> v;
for(int i=0 ; i<n ; i++ )
mp[s[i]]++;
for(char c='a' ; c<='z' ; c++)
v.pb({mp[c],c});
sort(allR(v));
for(int i=0 ; i<v.size() ; i++ ){
if( v[i].first >=k )
ans+=v[i].second;
}
for(int i=0 ; i<v.size() ; i++ ){
if( v[i].first && (v[i].first)%k >= (v[i].first)/k )
add+=v[i].second;
}
// cout << ans <<" "<<add<<" ";;
if(!ans.size())
puts("3");
else{
if(!add.size())
puts("1");
else
puts("2");
for(int i=0 ; i<k ; i++)
finalans+=ans;
finalans+=add;
for(int i=0 ; i<n ; i++ )
cout << finalans[i];
puts("");
}
return 0 ;
}
Copy