/*
* Copyright (c) 2025 Emon Thakur
* All rights reserved.
*/
#include<bits/stdc++.h>
using namespace std;
char sg[800005];
void build(int node,int start,int end,string &s)
{
if(start == end)
{
sg[node] = s[start];
return;
}
int mid = (start + end)/2;
build(node*2,start,mid,s);
build(node*2+1,mid+1,end,s);
sg[node] = min(sg[node*2] , sg[node*2+1]);
}
char query(int node,int start,int end,int l,int r)
{
if(l>end || r<start) return ('z'+1);
if(l<=start && r>=end) return sg[node];
int mid = (start + end)/2;
return min(query(node*2,start,mid,l,r) , query(node*2+1,mid+1,end,l,r));
}
void main()
{
// string outp = "output"+to_string(tc)+".txt";
// string inp = "input"+to_string(tc)+".txt";
// ofstream file(outp);
// freopen(inp.c_str(),"r",stdin);
int n,k; cin >> n >> k;
string s; cin >> s;
build(1,0,n-1,s);
for(int i=0;i+k<=n;i++)
{
char mn = query(1,0,n-1,i,i+k-1);
if(mn < s[i] || i+k==n) sort(s.begin()+i,s.begin()+i+k) , i+=(k-1);
}
cout<<s<<endl;
}
// int main()
// {
// for(int i=0;i<100;i++) main2(i);
// }