#include <bits/stdc++.h>
using namespace std;
mt19937 RNG(chrono::steady_clock::now().time_since_epoch().count());
template <typename T>
T ceil(T a, T b) {
  return (a + b - 1) / b;
}
template <typename T>
T binpow(T a, T b, T m) {
  a %= m;
  T res = 1;
  while (b > 0) {
    if (b & 1) res = res * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return res;
}
const int N = 300;
int n;
string s, t;
int dp[N][N][N];
int calc(int pos, int k, int num_t0) {
  if (pos >= n) {
    return 0;
  }
  if (dp[pos][k][num_t0] != -1) {
    return dp[pos][k][num_t0];
  }
  int res = 0;
  res = calc(pos + 1, k, num_t0);
  int temp = s[pos] != t[0];
  if (k - temp >= 0) res = max(res, calc(pos + 1, k - temp, num_t0 + 1));
  temp = s[pos] != t[1];
  if (k - temp >= 0) res = max(res, num_t0 + calc(pos + 1, k - temp, num_t0));
  return dp[pos][k][num_t0] = res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  int k;
  cin >> n >> k;
  cin >> s >> t;
  if (t[0] == t[1]) {
    int cnt = 0;
    for (char c : s) {
      if (c == t[0]) {
        cnt++;
      }
    }
    cnt += min(k, n - cnt);
    long long ans = cnt * (cnt - 1) / 2;
    cout << ans;
  } else {
    memset(dp, -1, sizeof(dp));
    cout << calc(0, k, 0);
  }
  return 0;
}
