#include <bits/stdc++.h>
using namespace std;
long long ans, sum1[500005], sum2[500005], f1[500005], f2[500005], H1, H2, p;
int R, L, D, U, n, X, Y, i;
char s[500005];
const int MOD = 1000000007;
int main() {
  scanf("%d%d%d", &n, &X, &Y);
  scanf("%s", s + 1);
  U = 1;
  D = X;
  L = 1;
  R = Y;
  for (i = 1; i <= n; i++) {
    ans = (ans + 1ll * (R - L + 1) * (D - U + 1)) % MOD;
    if (s[i] == 'L') L--, R--;
    if (s[i] == 'R') L++, R++;
    if (s[i] == 'U') U--, D--;
    if (s[i] == 'D') U++, D++;
    L = max(L, 1);
    U = max(U, 1);
    R = min(R, Y);
    D = min(D, X);
    L = min(L, Y + 1);
    U = min(U, X + 1);
    R = max(R, 0);
    D = max(D, 0);
  }
  f1[0] = (R - L + 1);
  f2[0] = (D - U + 1);
  if (!f1[0] || !f2[0]) {
    cout << ans;
    return 0;
  }
  for (i = 1; i <= n; i++) {
    if (s[i] == 'L') L--, R--;
    if (s[i] == 'R') L++, R++;
    if (s[i] == 'U') U--, D--;
    if (s[i] == 'D') U++, D++;
    L = max(L, 1);
    U = max(U, 1);
    R = min(R, Y);
    D = min(D, X);
    L = min(L, Y + 1);
    U = min(U, X + 1);
    R = max(R, 0);
    D = max(D, 0);
    f1[i] = (R - L + 1);
    f2[i] = (D - U + 1);
  }
  H1 = f1[0] - f1[n];
  H2 = f2[0] - f2[n];
  if (!H1 && !H2) {
    puts("-1");
    return 0;
  }
  for (i = 1; i <= 500000; i++)
    sum1[i] = (sum1[i - 1] + i) % MOD,
    sum2[i] = (sum2[i - 1] + 1ll * i * i) % MOD;
  for (i = 0; i < n; i++) {
    if (H1 == 0)
      p = f2[i] / H2;
    else if (H2 == 0)
      p = f1[i] / H1;
    else
      p = min(f2[i] / H2, f1[i] / H1);
    ans = (ans + p * f1[i] % MOD * f2[i] -
           (f1[i] * H2 + f2[i] * H1) % MOD * sum1[p - 1] +
           H1 * H2 % MOD * sum2[p - 1]) %
          MOD;
    f1[i] -= p * H1;
    f2[i] -= p * H2;
    ans = (ans + f1[i] * f2[i]) % MOD;
  }
  cout << (ans + MOD) % MOD;
  return 0;
}
