func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int dp[205][205][205];   long long int n, k;   string s, t;   char c1, c2;   long long int solve(long long int pos, long long int k, long long int cnt) {     if (pos >= n) {       return 0;     }     if (dp[pos][k][cnt] != -1) return dp[pos][k][cnt];     long long int ans = 0;     ans = max(solve(pos + 1, k, cnt), ans);     if (c1 == s[pos] && k >= 0) {       ans = max(solve(pos + 1, k, cnt + 1), ans);     } else if (c1 != s[pos] && k >= 1) {       ans = max(solve(pos + 1, k - 1, cnt + 1), ans);     }     if (c2 == s[pos] && k >= 0) {       ans = max(cnt + solve(pos + 1, k, cnt), ans);     } else if (c2 != s[pos] && k >= 1) {       ans = max(cnt + solve(pos + 1, k - 1, cnt), ans);     }     return dp[pos][k][cnt] = ans;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     ;     cin >> n >> k;     cin >> s >> t;     c1 = t[0];     c2 = t[1];     for (int i = 0; i < 205; i++)       for (int j = 0; j < 205; j++)         for (int p = 0; p < 205; p++) dp[i][j][p] = -1;     if (c1 != c2) {       cout << solve(0, k, 0) << endl;     } else {       long long int cnt = 0;       for (int i = 0; i < n; i++) {         if (s[i] == c1) cnt++;       }       long long int ans = min(cnt + k, n);       ans = ans * (ans - 1) / 2;       cout << ans;     }   }   