#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 200 + 10;
int n, k;
int a[maxn];
char s[maxn], t[10];
int f[maxn][maxn][maxn];
void print(int a[], int n, int st = 0) {
  for (int i = 0; i < n; i++) {
    if (i != 0) printf(" ");
    printf("%d", a[i + st]);
  }
  printf("\n");
}
void init() { scanf("%d%d%s%s", &n, &k, s, t); }
void doit() {
  memset(f, -1, sizeof(f));
  f[0][0][0] = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= k; j++) {
      for (int p = 0; p <= i; p++)
        if (f[i][j][p] >= 0) {
          f[i + 1][j][p] = max(f[i + 1][j][p], f[i][j][p]);
          if (t[0] == t[1])
            f[i + 1][j + (s[i] != t[0])][p + 1] =
                max(f[i + 1][j + (s[i] != t[0])][p + 1], f[i][j][p] + p);
          f[i + 1][j + (s[i] != t[0])][p + 1] =
              max(f[i + 1][j + (s[i] != t[0])][p + 1], f[i][j][p]);
          f[i + 1][j + (s[i] != t[1])][p] =
              max(f[i + 1][j + (s[i] != t[1])][p], f[i][j][p] + p);
        }
    }
  }
  int ans = 0;
  for (int i = 0; i <= k; i++)
    for (int j = 0; j <= n; j++) {
      ans = max(ans, f[n][i][j]);
    }
  printf("%d\n", ans);
}
int main() {
  init();
  doit();
  return 0;
}
