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
//              +-- -- --++-- +-In the name of ALLAH-+ --++-- -- --+              \\

#include <bits/stdc++.h>

#define F first
#define S second
#define _sz(x) (int)x.size()
#define pb push_back

#define error(x) cout << #x << " = " << x << endl

using namespace std ;
using ll = long long ;
using ld = long double ;
using pii = pair <int , int> ;

const int N = 5000 + 20 ;
int n , k ;
string s ;

int main(){
	ios::sync_with_stdio(false) , cin.tie(0) , cout.tie(0) ;

	cin >> n >> k ;
	cin >> s ;

	string t = s , m = s ;
	reverse(t.begin() , t.end()) ;

	s += t ;

	for (int i = 0 ; i < n ; i ++)
		m = min(m , s.substr(i , n)) ;

	int a = 0 , b = 0 ;
	while (a < n && m[0] == m[a]) a ++ ;

	k -- ;

	if (k > 20 || (a << k) > n) b = n ;
	else b = a << k ;

	for (int i = 0 ; i < b ; i ++) cout << m[0] ;
	cout << m.substr(a , n - b) ;
	cout << '\n' ;
}
