Takahashi has a string S of length N consisting of lowercase English letters. On this string, he will perform the following operation K times:

* Let T be the string obtained by reversing S, and U be the string obtained by concatenating S and T in this order.
* Let S' be some contiguous substring of U with length N, and replace S with S'.



Among the strings that can be the string S after the K operations, find the lexicographically smallest possible one.

Constraints

* 1 \leq N \leq 5000
* 1 \leq K \leq 10^9
* |S|=N
* S consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:


N K
S


Output

Print the lexicographically smallest possible string that can be the string S after the K operations.

Examples

Input

5 1
bacba


Output

aabca


Input

10 2
bbaabbbaab


Output

aaaabbaabb
#include <bits/stdc++.h>
#define rep(i, n) for(int i = 0; i < (n); i++)
#define all(a) a.begin(), a.end()
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
using namespace std;

// AtCoder Grand Contest 037
int main(){

    int N, K; cin >> N >> K;
    chmin(K, 15);

    string S; cin >> S; S += S;
    reverse(S.begin() + N, S.end());

    char need = 'z';
    rep(i, N)chmin(need, S[i]);

    string ans;
    rep(i, N)ans += 'z';

    function<void(string)> calc = [&](string s){
        reverse(all(s));
        int cnt = 0;
        rep(i, N){
            if(s[i] == need)cnt++;
            else break;
        }
        if(cnt == 0)return;
        if(((long long)cnt << (K - 1)) >= N){
            chmin(ans, string(N, need));
            return;
        } else {
            int sz = cnt << (K - 1);
            string tmp(sz, need);
            tmp += s.substr(cnt, N - sz);
            chmin(ans, tmp);
        }
    };

    rep(i, N + 1){
        string T = S.substr(i, N);
        calc(T);
    }

    cout << ans << endl;
    return 0;

}