#include <bits/stdc++.h>
using namespace std;
template <typename A1>
void prn(A1&& arg) {
  cout << arg << '\n';
}
template <typename A1, typename... A>
void prn(A1&& arg, A&&... args) {
  cout << arg << ' ';
  prn(args...);
}
long long dp[205][205][205];
long long n, k;
string s, t;
long long solve(long long pos, long long p, long long a) {
  if (p > k) return -INT_MAX;
  if (pos >= n) return 0;
  if (dp[pos][p][a] != -1) return dp[pos][p][a];
  long long res = 0;
  if (s[pos] == t[1])
    res = max(res, a + solve(pos + 1, p, a));
  else if (s[pos] == t[0])
    res = max(res, solve(pos + 1, p, a + 1));
  else
    res = max(res, solve(pos + 1, p, a));
  if (s[pos] != t[0]) res = max(res, solve(pos + 1, p + 1, a + 1));
  if (s[pos] != t[1]) res = max(res, a + solve(pos + 1, p + 1, a));
  return dp[pos][p][a] = res;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> k;
  cin >> s >> t;
  if (t[0] == t[1]) {
    long long x = 0;
    for (long long i = 0; i < n; i++)
      if (s[i] == t[0]) x++;
    long long rem = n - x;
    long long ans = x + min(k, rem);
    ans = ans * (ans - 1) / 2;
    prn(ans);
    return 0;
  }
  memset(dp, -1, sizeof dp);
  long long ans = solve(0, 0, 0);
  prn(ans);
}
