#include <bits/stdc++.h>
using namespace std;
int inta[500005], n, t, lh;
char buf[500005];
bool chk(int k) {
  int i = 0, time = 0, ko = k;
  while (i <= lh) {
    if (buf[i] == 'H')
      --k;
    else if (buf[i] == 'S')
      ++k;
    int j = i;
    while (k < 0) {
      if (++j == n) return 0;
      if (buf[j] == 'H')
        --k;
      else if (buf[j] == 'S')
        ++k;
    }
    if (j > i) {
      if (j > lh) {
        time += j - i << 1;
        if (time < t)
          return 1;
        else
          goto V2;
      } else {
        time += 1 + (j - i) * 3;
        i = j + 1;
      }
    } else
      ++i, ++time;
  }
  if (time <= t) return 1;
V2:
  i = 0;
  k = ko;
  for (; i <= lh; ++i) {
    if (buf[i] == 'H')
      --k;
    else if (buf[i] == 'S')
      ++k;
    if (k < 0) {
      int j = i;
      while (j < lh || k < 0) {
        if (++j == n) break;
        if (buf[j] == 'H')
          --k;
        else if (buf[j] == 'S')
          ++k;
      }
      if (j == n && k < 0) return 0;
      return i + (j - i) * 2 < t;
    }
  }
  return 0;
}
int main() {
  iota(inta, end(inta), 0);
  scanf("%d%d", &n, &t);
  scanf("%s", buf);
  lh = n;
  while (buf[lh] != 'H') --lh;
  if (!chk(n)) return puts("-1"), 0;
  printf("%d\n",
         *partition_point(inta, inta + n, [](int i) { return !chk(i); }));
}
