func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 500005;   int ult;   int cont;   int prim;   char cad[MAXN];   bool Solve(int a, int n, int T) {     int c = 0, time = 0;     queue<int> s;     prim = -1;     for (int i = 0; i < n && c < cont; i++, time++) {       if (cad[i] ==  H  && a > 0) {         c++;         a--;         if (prim == -1) prim = i;       } else if (cad[i] ==  H ) {         s.push(i);         if (prim == -1) prim = i;       } else if (cad[i] ==  S ) {         a++;         if (a >= s.size()) {           if (!s.empty()) {             int aux = abs(s.front() - i);             time += aux;             s.pop();             a--;             c++;             while (!s.empty()) {               c++;               a--;               s.pop();             }             if (c < cont) time += aux;           }         }       }       if (c == cont) ult = i;     }     time = min(time, ult + 1 + (ult - prim));     return (time <= T && c == cont);   }   int main() {     int n;     long long int T;     scanf( %d %lld , &n, &T);     scanf(  n%s , cad);     for (int i = 0; i < n; i++)       if (cad[i] ==  H ) cont++;     int ini = 0, fin = cont;     while (ini < fin) {       int med = (ini + fin) / 2;       if (!Solve(med, n, T))         ini = med + 1;       else         fin = med;     }     if (Solve(ini, n, T))       printf( %d n , ini);     else       printf( -1 n );     return 0;   }   