#include <bits/stdc++.h>
#define forn(i,s,t) for(register int i=(s);i<=(t);++i)
#define form(i,s,t) for(register int i=(s);i>=(t);--i)
using namespace std;
const int N = 5e2 + 3;
int t, n, k;
string s, trans;
inline void Trs(string& a, const string& b) {if(a.empty() || b < a) a = b;}
int main() {
	scanf("%d", &t);
	while(t--) {
		scanf("%d%d", &n, &k);
		cin >> s;
		trans = s;
		forn(i,0,n - 1) trans[i] = (s[i] == 'a' + k - 1) ? 'a' : (s[i] == 'a' ? 'a' : s[i] - 1);
		string dp[2][2];
		dp[0][0] = s; int cur = 0;
		forn(i,0,n-1) {
			cur ^= 1;
			dp[0][cur] = dp[1][cur] = "";
			if(!dp[0][!cur].empty()) {
				string& sta = dp[0][!cur];
				Trs(dp[0][cur], sta);
				if(i > 0) {
					swap(sta[i - 1], sta[i]);
					Trs(dp[0][cur], sta);
					swap(sta[i - 1], sta[i]);
				}
				if(i + 1 < n) {
					swap(sta[i], sta[i + 1]);
					Trs(dp[1][cur], sta);
					swap(sta[i], sta[i + 1]);
				}
				sta[i] = trans[i];
				Trs(dp[0][cur], sta);
			}
			if(!dp[1][!cur].empty()) {
				string& sta = dp[1][!cur];
				Trs(dp[0][cur], sta);
				if(i > 1) {
					swap(sta[i - 1], sta[i - 2]);
					Trs(dp[0][cur], sta);
					swap(sta[i - 1], sta[i - 2]);
				}
				sta[i - 1] = trans[i];
				Trs(dp[0][cur], sta);
			}
		}
		cout << dp[0][cur] << endl;
	}
	return 0;
}// OJ:: LG