#pragma comment(linker, "/stack:16777216") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,a,b) for(int i = (a); i < (b); ++i) #define RFOR(i,b,a) for(int i = (b) - 1; i >= (a); --i) #define REP(i,N) FOR(i, 0, N) #define RREP(i,N) RFOR(i, N, 0) #define FILL(A,value) memset(A,value,sizeof(A)) #define ALL(V) V.begin(), V.end() #define SZ(V) (int)V.size() #define PB push_back #define MP make_pair #define Pi 3.14159265358979 typedef long long Int; //typedef unsigned long long UINT; typedef vector VI; typedef pair PII; const int INF = 1000000000; const int MAX = 200000; const int MAX2 = 1000000; const int BASE = 1000000000; const int CNT = 20; #define MOD 1000000007 struct Test { int n, k; string s; Test(){} int D[MAX]; int solve() { // sum will be the current change // In D we will keep where are positions where we have to subtract 1 from the current change FILL(D, 0); int res = 0, sum = 0; FOR (i,0,n) { int d = (s[i] == 'R' ? 0 : 1); sum ^= D[i]; d ^= sum; if (d == 0) { ++ res; sum ^= 1; D[min(n, i+k)] ^= 1; } } return res; } void writeTest() { cout << n << ' ' << k << endl; cout << s << endl; } void writeRes() { cout << solve() << endl; } void readTest() { cin >> n >> k; cin >> s; } }; int main() { int cnt; cin >> cnt; FOR (i,0,cnt) { Test t; t.readTest(); t.writeRes(); } return 0; }