#include <bits/stdc++.h>
using namespace std;
long long N, ans, finx, finy;
long long prex[200005];
long long prey[200005];
bool sePuede(long long l, long long r) {
  long long actx = 0, acty = 0;
  if (l > 1) {
    actx += prex[l - 1];
    acty += prey[l - 1];
  }
  if (r < N) {
    actx += prex[N];
    acty += prey[N];
    actx -= prex[r];
    acty -= prey[r];
  }
  long long tmp = abs(actx - finx) + abs(acty - finy);
  if (tmp <= r - l + 1) return true;
  return false;
}
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cin >> N;
  ans = 1e7;
  for (long long i = 1; i <= N; i++) {
    char op;
    cin >> op;
    prex[i] = prex[i - 1];
    prey[i] = prey[i - 1];
    if (op == 'U') prey[i]++;
    if (op == 'D') prey[i]--;
    if (op == 'L') prex[i]--;
    if (op == 'R') prex[i]++;
  }
  cin >> finx >> finy;
  if (N < abs(finx) + abs(finy)) {
    cout << "-1\n";
    return 0;
  }
  if ((N - abs(finx) - abs(finy)) & 1) {
    cout << "-1\n";
    return 0;
  }
  for (long long i = 1; i <= N; i++) {
    long long ini = i;
    long long fin = N;
    while (ini < fin) {
      long long mid = (ini + fin) / 2;
      if (sePuede(i, mid))
        fin = mid;
      else
        ini = mid + 1;
    }
    if (sePuede(i, ini)) ans = min(ans, ini - i + 1);
  }
  if (prex[N] == finx && prey[N] == finy) ans = 0;
  cout << ans;
  return 0;
}
