#include <bits/stdc++.h>
using namespace std;
int dx[] = {0, 1, 0, -1, 1, 1, -1, -1};
int dy[] = {1, 0, -1, 0, 1, -1, 1, -1};
long long fix_mod(long long x, long long y) { return (y + x % y) % y; }
void fast() {
  std::ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
}
string s, t;
long long mem[201][201][201];
long long solve(int i, int k, int cnt) {
  if (k < 0) return -1e18;
  if (i == s.size()) return 0;
  long long& ret = mem[i][k][cnt];
  if (~ret) return ret;
  ret = solve(i + 1, k, cnt + (s[i] == t[0])) + (s[i] == t[1] ? cnt : 0);
  if (t[0] == t[1])
    ret = max(ret, solve(i + 1, k - 1, cnt + 1) + cnt);
  else {
    ret = max(ret, solve(i + 1, k - 1, cnt + 1));
    ret = max(ret, solve(i + 1, k - 1, cnt) + cnt);
  }
  return ret;
}
int main() {
  fast();
  int n, k;
  cin >> n >> k >> s >> t;
  memset(mem, -1, sizeof mem);
  cout << solve(0, k, 0);
}
