func_code_string: #include <bits/stdc++.h>   using namespace std;   bool cmp(long long a, long long b) { return (a > b); }   long long ceil(const long long &a, const long long &b) {     if (a % b == 0) return a / b;     return a / b + 1;   }   long long mod = 1000000007;   const long long N = 105;   string s;   long long n1;   long long res;   long long dp[N][60][2][2 * N];   long long solve(long long i, long long k, long long cnt = 0,                   long long z = 100) {     if (i == n1) {       if (k % 2 == 0) {         res = max(res, abs(z - 100));       }       return 0;     }     if (dp[i][k][cnt][z] != -1) {       return dp[i][k][cnt][z];     }     long long k1 = 0, k2 = 0;     if (s[i] ==  F ) {       if (k > 0) {         if (cnt % 2 == 0) {           k1 = 1 + solve(i + 1, k, 0, z + 1);           k2 = solve(i + 1, k - 1, 1, z);         } else {           k1 = -1 + solve(i + 1, k, 1, z - 1);           k2 = solve(i + 1, k - 1, 0, z);         }       } else {         if (cnt % 2 == 0) {           k1 = 1 + solve(i + 1, k, 0, z + 1);         } else {           k1 = -1 + solve(i + 1, k, 1, z - 1);         }       }     } else {       if (k > 0) {         if (cnt % 2 == 0) {           k1 = solve(i + 1, k, 1, z);           k2 = 1 + solve(i + 1, k - 1, 0, z + 1);         } else {           k1 = solve(i + 1, k, 0, z);           k2 = -1 + solve(i + 1, k - 1, 1, z - 1);         }       } else {         if (cnt % 2 == 0) {           k1 = solve(i + 1, k, 1, z);         } else {           k1 = solve(i + 1, k, 0, z);         }       }     }     return dp[i][k][cnt][z] = max(abs(k1), abs(k2));   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long n;     cin >> s >> n;     n1 = s.size();     memset(dp, -1, sizeof(dp));     long long x = solve(0, n);     cout << res;     return 0;   }   