#include <bits/stdc++.h>
const int MAXN = 205;
using namespace std;
int n, op, A[MAXN], t[2];
string s, tt;
void solve() {
  cin >> n >> op >> s >> tt;
  t[0] = tt[0], t[1] = tt[1];
  for (int i = 0; i < n; i++) {
    A[i] = s[i];
  }
  if (t[0] == t[1]) {
    int cnt = 0;
    for (int i = 0; i < n; i++) {
      cnt += (A[i] == t[0]);
    }
    cnt = min(cnt + op, n);
    cout << cnt * (cnt - 1) / 2 << '\n';
    return;
  }
  int ans = 0;
  vector<vector<int>> dp(n + 1, vector<int>(n + 1, -1)), nxt = dp;
  dp[0][0] = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= n; j++) {
      for (int k = 0; k <= n; k++) {
        if (dp[j][k] == -1) continue;
        {
          int add0 = (A[i] == t[0]), addp = (A[i] == t[1] ? k : 0);
          nxt[j][k + add0] = max(nxt[j][k + add0], dp[j][k] + addp);
        }
        {
          int add0 = 1, addp = 0;
          nxt[j + 1][k + add0] = max(nxt[j + 1][k + add0], dp[j][k] + addp);
        }
        {
          int add0 = 0, addp = k;
          nxt[j + 1][k + add0] = max(nxt[j + 1][k + add0], dp[j][k] + addp);
        }
      }
    }
    swap(dp, nxt);
    nxt = vector<vector<int>>(n + 1, vector<int>(n + 1, -1));
  }
  for (int i = 0; i <= op; i++) {
    for (int j = 0; j <= n; j++) {
      ans = max(ans, dp[i][j]);
    }
  }
  cout << ans << '\n';
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int tc = 1;
  for (int i = 1; i <= tc; i++) {
    solve();
  }
  return 0;
}
