#include <iostream>
using namespace std;
int main() {
int q;
cin >> q;
while (q--) {
int n, k;
cin >> n >> k;
string s;
cin >> s;
// 统计差异数目
int i = 0, j = n - 1, cnt = 0;
while (i < j) {
if (s[i] != s[j]) {
++ cnt;
}
++i, --j;
}
// 无法通过反转构成回文串
if (cnt > k) {
cout << "NO" << endl;
} else {
// 先通过 cnt 次操作使得 s 成为回文串
k -= cnt;
// if (n & 1) {
// cout << "YES" << endl;
// } else {
// if (k & 1) {
// cout << "NO" << endl;
// } else {
// cout << "YES" << endl;
// }
// }
// 当 s 长度为奇数时,剩余次数只需要反转其中间位置
// 当 s 长度为偶数时,需要成对反转
if (n & 1 || !(k & 1)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
}
}
// 64 位输出请用 printf("%lld")