func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long INF = 1e15;   long long binpow(long long a, long long b) {     long long res = 1;     while (b > 0) {       if (b & 1) {         res = res * a;       }       a = a * a;       b >>= 1;     }     return res;   }   long long dp[205][205][205];   int32_t main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long T;     T = 1;     while (T--) {       long long n, k;       string s, t;       cin >> n >> k;       cin >> s >> t;       memset(dp, -1, sizeof(dp));       dp[0][0][0] = 0;       long long i, j;       for (i = 0; i < n; i++) {         for (j = 0; j <= k; j++) {           for (long long f0 = 0; f0 <= n; f0++) {             if (dp[i][j][f0] == -1) {               continue;             }             long long e0 = s[i] == t[0];             long long e1 = s[i] == t[1];             long long e01 = t[0] == t[1];             dp[i + 1][j][f0 + e0] =                 max(dp[i + 1][j][f0 + e0], dp[i][j][f0] + (e1 ? f0 : 0));             if (j + 1 <= k)               dp[i + 1][j + 1][f0 + 1] =                   max(dp[i + 1][j + 1][f0 + 1], dp[i][j][f0] + (e01 ? f0 : 0));             if (j + 1 <= k)               dp[i + 1][j + 1][f0 + e01] =                   max(dp[i + 1][j + 1][f0 + e01], dp[i][j][f0] + f0);           }         }       }       long long ans = 0;       for (j = 0; j <= k; j++) {         for (long long f0 = 0; f0 <= n; f0++) {           ans = max(ans, dp[n][j][f0]);         }       }       cout << ans <<   n ;     }   }   