#include <bits/stdc++.h>
using namespace std;
const int N = 1 << 8;
int n, K;
char S[N];
char T[3];
int M[N][N][N];
bool V[N][N][N];
void iter() {
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    if (S[i] == T[1]) {
      cnt++;
    }
  }
  cnt = min(n, cnt + K);
  cout << ((cnt * (cnt - 1)) >> 1) << '\n';
}
int rec(int i, int m, int k) {
  int cnt = 0;
  if (i <= n) {
    if (V[i][m][k] == true) {
      cnt = M[i][m][k];
    } else {
      if (k == 0) {
        if (S[i] == T[1]) {
          cnt = rec(i + 1, m + 1, k);
        } else {
          if (S[i] == T[2]) {
            cnt = rec(i + 1, m, k) + m;
          } else {
            cnt = rec(i + 1, m, k);
          }
        }
      } else {
        if (S[i] == T[1]) {
          cnt = max(rec(i + 1, m + 1, k), rec(i + 1, m, k - 1) + m);
        } else {
          if (S[i] == T[2]) {
            cnt = max(rec(i + 1, m, k) + m, rec(i + 1, m + 1, k - 1));
          } else {
            cnt = max(rec(i + 1, m, k),
                      max(rec(i + 1, m + 1, k - 1), rec(i + 1, m, k - 1) + m));
          }
        }
      }
      M[i][m][k] = cnt;
      V[i][m][k] = true;
    }
  }
  return cnt;
}
void init() {
  cin >> n >> K;
  for (int i = 1; i <= n; i++) {
    cin >> S[i];
  }
  for (int i = 1; i <= 2; i++) {
    cin >> T[i];
  }
}
void solve() {
  if (T[1] == T[2]) {
    iter();
  } else {
    cout << rec(1, 0, K) << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  init();
  solve();
  return 0;
}
