#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
using namespace std;
long long solve(string str1, string str2, long long n, long long k) {
  long long arr[n + 1];
  memset(arr, 0, sizeof(arr));
  long long i, terminate = n;
  long long ans = n;
  long long cnt = 0;
  for (i = 0; i < n; i++) {
    if (str1[i] != str2[i % 3]) arr[i]++;
  }
  for (i = 0; i < k; i++) cnt += arr[i];
  ans = min(ans, cnt);
  for (i = k; i < n; i++) {
    cnt = cnt + arr[i] - arr[i - k];
    ans = min(ans, cnt);
  }
  if (k + 1 < n) {
    cnt = 0;
    for (i = 1; i < n; i++) {
      if (str1[i] != str2[(i - 2) % 3]) arr[i]++;
    }
    for (i = 1; i <= k; i++) cnt += arr[i];
    ans = min(ans, cnt);
    for (i = k + 1; i < n; i++) {
      cnt = cnt + arr[i] - arr[i - k];
      ans = min(ans, cnt);
    }
    cnt = 0;
    if (i + 2 < k) {
      for (i = 2; i < n; i++) {
        if (str1[i] != str2[(i - 1) % 3]) arr[i]++;
      }
      for (i = 2; i <= k + 1; i++) cnt += arr[i];
      ans = min(ans, cnt);
      for (i = k + 2; i < n; i++) {
        cnt = cnt + arr[i] - arr[i - k];
        ans = min(ans, cnt);
      }
    }
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t, n, m, i, s, j, k, c;
  cin >> t;
  while (t--) {
    s = 0;
    cin >> n >> k;
    string a;
    cin >> a;
    long long ans = n;
    ans = min(
        {solve(a, "RGB", n, k), solve(a, "GBR", n, k), solve(a, "BRG", n, k)});
    cout << ans << endl;
  }
  return 0;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long power(long long x, long long y, long long m) {
  if (y == 0) return 1;
  long long p = power(x, y / 2, m) % m;
  p = (p * p) % m;
  return (y % 2 == 0) ? p : (x * p) % m;
}
long long modInverse(long long a, long long m) { return power(a, m - 2, m); }
