#include <bits/stdc++.h>
using namespace std;
int N, K;
string S, T;
int from[202][202];
int to[202][202];
void solve() {
  int i, j, k, l, r, x, y;
  string s;
  cin >> N >> K >> S >> T;
  if (T[0] == T[1]) {
    x = 0;
    for (auto& c : S)
      if (c == T[0]) x++;
    x = min(N, x + K);
    cout << x * (x - 1) / 2 << endl;
    return;
  }
  for (x = 0; x < (202); x++)
    for (y = 0; y < (202); y++) from[x][y] = -1 << 30;
  from[0][K] = 0;
  for (i = 0; i < (N); i++) {
    for (x = 0; x < (202); x++)
      for (y = 0; y < (202); y++) to[x][y] = -1 << 30;
    for (x = 0; x < (i + 1); x++)
      for (y = 0; y < (K + 1); y++) {
        to[x][y] = max(to[x][y], from[x][y]);
        if (S[i] == T[0]) to[x + 1][y] = max(to[x + 1][y], from[x][y]);
        if (y) to[x + 1][y - 1] = max(to[x + 1][y - 1], from[x][y]);
        if (S[i] == T[1]) to[x][y] = max(to[x][y], from[x][y] + x);
        if (y) to[x][y - 1] = max(to[x][y - 1], from[x][y] + x);
      }
    swap(from, to);
  }
  int ma = 0;
  for (x = 0; x < (202); x++)
    for (y = 0; y < (202); y++) ma = max(ma, from[x][y]);
  cout << ma << endl;
}
int main(int argc, char** argv) {
  string s;
  int i;
  if (argc == 1) ios::sync_with_stdio(false), cin.tie(0);
  for (i = 0; i < (argc - 1); i++) s += argv[i + 1], s += '\n';
  for (i = 0; i < (s.size()); i++) ungetc(s[s.size() - 1 - i], stdin);
  cout.tie(0);
  solve();
  return 0;
}
