#include <bits/stdc++.h>
using namespace std;
int main() {
  int t;
  cin >> t;
  while (t--) {
    int n, k;
    cin >> n >> k;
    string s;
    cin >> s;
    vector<pair<int, int> > pontes;
    bool lastW = false;
    int tam = 0;
    for (int i = 0; i < n; i++) {
      if (s[i] == 'W' && !lastW) {
        lastW = true;
      } else if (s[i] == 'W' && lastW) {
        pontes.push_back(make_pair(tam, i));
        tam = 0;
      }
      if (s[i] == 'L' && lastW) {
        tam++;
      }
    }
    sort(pontes.begin(), pontes.end());
    long long ans = 0;
    for (int i = 0; i < pontes.size(); i++) {
      if (pontes[i].first <= k) {
        k -= pontes[i].first;
        for (int j = pontes[i].second - pontes[i].first; j < pontes[i].second;
             j++) {
          s[j] = 'W';
        }
      } else {
        break;
      }
    }
    if (k > 0) {
      for (int i = 1; i < n; i++) {
        if (k <= 0) {
          break;
        }
        if (s[i - 1] == 'W' && s[i] != 'W') {
          s[i] = 'W';
          k--;
        }
      }
    }
    if (k > 0) {
      for (int i = n - 2; i >= 0; i--) {
        if (k <= 0) {
          break;
        }
        if (s[i + 1] == 'W' && s[i] != 'W') {
          s[i] = 'W';
          k--;
        }
      }
    }
    if (k > 0) {
      for (int i = 0; i < n; i++) {
        if (k <= 0) break;
        if (s[i] == 'L') {
          s[i] = 'W';
          k--;
        }
      }
    }
    ans = 0;
    bool hasW = false;
    for (int i = 0; i < n; i++) {
      if (s[i] == 'W' && !hasW) {
        ans += 1;
        hasW = true;
      } else if (s[i] == 'W' && hasW) {
        ans += 2;
      }
      if (s[i] == 'L') {
        hasW = false;
      }
    }
    cout << ans << endl;
  }
  return 0;
}
