#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000;
const long long mod = 1000000007;
const long long INF = 10000000000000ll;
int n, h, w;
char ch[maxn];
long long Left[maxn], Right[maxn];
long long Up[maxn], Down[maxn];
long long hor[maxn], ver[maxn];
long long ans, sum[maxn];
void preprocess() {
  int x = 0, y = 0;
  for (int i = 1; i <= h; i++) Up[i] = Down[i] = INF;
  for (int i = 1; i <= w; i++) Left[i] = Right[i] = INF;
  for (int i = 0; i < n; i++) {
    int t = 0, s = 0;
    if (ch[i] == 'L')
      t = -1;
    else if (ch[i] == 'R')
      t = 1;
    x += t;
    if (ch[i] == 'U')
      s = -1;
    else if (ch[i] == 'D')
      s = 1;
    y += s;
    if (-w <= x && x <= w) {
      if (x > 0)
        Right[x] = min(Right[x], i + 1ll);
      else if (x < 0)
        Left[-x] = min(Left[-x], i + 1ll);
    }
    if (-h <= y && y <= h) {
      if (y > 0)
        Down[y] = min(Down[y], i + 1ll);
      else if (y < 0)
        Up[-y] = min(Up[-y], i + 1ll);
    }
  }
  int t = x > 0 ? x : -x;
  for (int i = 1; i <= w; i++)
    if (i > t) {
      if (x < 0) Left[i] = min(Left[i], Left[i - t] + n);
      if (x > 0) Right[i] = min(Right[i], Right[i - t] + n);
    }
  t = y > 0 ? y : -y;
  for (int i = 1; i <= h; i++)
    if (i > t) {
      if (y < 0) Up[i] = min(Up[i], Up[i - t] + n);
      if (y > 0) Down[i] = min(Down[i], Down[i - t] + n);
    }
}
int main() {
  scanf("%d%d%d", &n, &h, &w);
  scanf("%s", ch);
  preprocess();
  sum[0] = 0;
  for (int i = 1; i <= w; i++) ver[i] = min(Left[i], Right[w - i + 1]);
  sort(ver + 1, ver + w + 1);
  for (int i = 1; i <= w; i++) sum[i] = (sum[i - 1] + ver[i]) % mod;
  bool flag = false;
  ans = 0;
  for (int i = 1; i <= h; i++) {
    long long t = min(Up[i], Down[h - i + 1]);
    if (t == INF && ver[w] == INF) flag = true;
    if (ver[w] < t)
      ans = (ans + sum[w]) % mod;
    else {
      int g = lower_bound(ver + 1, ver + w + 1, t) - ver;
      ans = (ans + sum[g - 1] + (long long)(w - g + 1) * t % mod) % mod;
    }
  }
  if (flag)
    printf("-1\n");
  else
    printf("%I64d\n", ans);
  return 0;
}
