#include <bits/stdc++.h>
using namespace std;
template <class c>
struct rge {
  c b, e;
};
template <class c>
rge<c> range(c i, c j) {
  return {i, j};
}
struct printer {
  ~printer() { cerr << endl; }
  template <class c>
  printer& operator,(c x) {
    cerr << boolalpha << x;
    return *this;
  }
  printer& operator,(string x) {
    cerr << x;
    return *this;
  }
  template <class c, class d>
  printer& operator,(pair<c, d> x) {
    return *this, "(", x.first, ", ", x.second, ")";
  }
  template <class... d, template <class...> class c>
  printer& operator,(c<d...> x) {
    return *this, range(begin(x), end(x));
  }
  template <class c>
  printer& operator,(rge<c> x) {
    *this, "[";
    for (auto it = x.b; it != x.e; ++it) *this, (it == x.b ? "" : ", "), *it;
    return *this, "]";
  }
};
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int my_rand(int l, int r) { return uniform_int_distribution<int>(l, r)(rng); }
const int N = 202;
int dp[N][N][N];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, K;
  cin >> n >> K;
  string S, T;
  cin >> S >> T;
  if (T[0] == T[1]) {
    int cnt = 0;
    for (char ch : S) {
      if (ch == T[0])
        cnt++;
      else if (K) {
        cnt++;
        K--;
      }
    }
    cout << cnt * (cnt - 1) / 2 << endl;
  } else {
    for (int i = 0; i <= n; i++) {
      for (int j = 0; j <= K; j++) {
        for (int b = 0; b <= n; b++) {
          dp[i][j][b] = -1e9;
        }
      }
    }
    dp[n][0][0] = 0;
    for (int i = n - 1; i >= 0; i--) {
      for (int j = 0; j <= K; j++) {
        for (int b = 0; b <= n; b++) {
          if (S[i] == T[0])
            dp[i][j][b] = max(dp[i][j][b], dp[i + 1][j][b] + b);
          else if (j > 0)
            dp[i][j][b] = max(dp[i][j][b], dp[i + 1][j - 1][b] + b);
          if (S[i] == T[1]) {
            if (b) dp[i][j][b] = max(dp[i][j][b], dp[i + 1][j][b - 1]);
          } else if (j > 0 && b > 0) {
            dp[i][j][b] = max(dp[i][j][b], dp[i + 1][j - 1][b - 1]);
          }
          if (S[i] != T[0] and S[i] != T[1]) {
            dp[i][j][b] = max(dp[i][j][b], dp[i + 1][j][b]);
          }
        }
      }
    }
    int ans = 0;
    for (int j = 0; j <= K; j++) {
      for (int b = 0; b <= n; b++) {
        ans = max(ans, dp[0][j][b]);
      }
    }
    cout << ans << endl;
  }
}
