#include <bits/stdc++.h>
using namespace std;
int score(int dir, pair<int, int> pos) {
  if (dir == 0) return pos.first;
  if (dir == 1) return pos.second;
  if (dir == 2) return -pos.first;
  return -pos.second;
}
pair<int, int> operator+(pair<int, int> l, pair<int, int> r) {
  return make_pair(l.first + r.first, l.second + r.second);
}
long long btime[4][500001];
int bend[4];
string movc = "URDL";
pair<int, int> mov[4] = {make_pair(1, 0), make_pair(0, 1), make_pair(-1, 0),
                         make_pair(0, -1)};
int main() {
  cin.sync_with_stdio(false);
  int n, h, w;
  string pat;
  cin >> n >> h >> w >> pat;
  pair<int, int> pos = make_pair(0, 0);
  fill(btime[0], btime[0] + (4 * 500001), 1000000000000000000LL);
  for (size_t time = 0; time < pat.size(); time++) {
    for (int dir = 0; dir < 4; dir++) {
      int cscore = score(dir, pos);
      if (cscore >= 0)
        btime[dir][cscore] = min(btime[dir][cscore], (long long)time);
      bend[dir] = max(bend[dir], cscore + 1);
    }
    pos = pos + mov[movc.find(pat[time])];
  }
  for (int dir = 0; dir < 4; dir++) {
    int cscore = score(dir, pos);
    if (cscore > 0) {
      while (bend[dir] <= 500000) {
        btime[dir][bend[dir]] = btime[dir][bend[dir] - cscore] + pat.size();
        bend[dir]++;
      }
    }
  }
  vector<long long> htime, vtime;
  for (int i = 0; i < h; i++)
    vtime.push_back(min(btime[0][i + 1], btime[2][h - i]));
  for (int i = 0; i < w; i++)
    htime.push_back(min(btime[1][i + 1], btime[3][w - i]));
  sort(vtime.begin(), vtime.end());
  sort(htime.begin(), htime.end());
  if (vtime.back() == 1000000000000000000LL &&
      htime.back() == 1000000000000000000LL) {
    cout << "-1\n";
    return 0;
  }
  int result = 0;
  for (int i = htime.size() - 1, j = vtime.size() - 1; i >= 0 || j >= 0;) {
    int toadd;
    if (j < 0 || (i >= 0 && htime[i] > vtime[j])) {
      toadd =
          ((htime[i] % 1000000007) * ((int)vtime.size() - j - 1)) % 1000000007;
      i--;
    } else {
      toadd =
          ((vtime[j] % 1000000007) * ((int)htime.size() - i - 1)) % 1000000007;
      j--;
    }
    result = (result + toadd) % 1000000007;
  }
  cout << result << '\n';
  return 0;
}
