#include <bits/stdc++.h>
using namespace std;
const int tope = 100001;
int n, m;
int vistoi[2][tope][2][2];
int vistoj[2][tope][2][2];
void rebota(int i, int j, int &di, int &dj) {
  if (i == 0) {
    if (di == 0) di = 1;
  } else if (i == n - 1) {
    if (di == 1) di = 0;
  }
  if (j == 0) {
    if (dj == 0) dj = 1;
  } else if (j == m - 1) {
    if (dj == 1) dj = 0;
  }
}
bool sehavisto(int i, int j, int di, int dj) {
  return (i == 0 and vistoi[0][j][di][dj]) or
         (i == n - 1 and vistoi[1][j][di][dj]) or
         (j == 0 and vistoj[0][i][di][dj]) or
         (j == m - 1 and vistoj[1][i][di][dj]);
}
void marcavisto(int i, int j, int di, int dj) {
  if (i == 0) vistoi[0][j][di][dj] = 1;
  if (i == n - 1) vistoi[1][j][di][dj] = 1;
  if (j == 0) vistoj[0][i][di][dj] = 1;
  if (j == m - 1) vistoj[1][i][di][dj] = 1;
}
int main() {
  cin >> n >> m;
  int i, j, di, dj;
  string s;
  cin >> i >> j >> s;
  i--;
  j--;
  if (s == "UL") {
    di = 0;
    dj = 0;
  } else if (s == "UR") {
    di = 0;
    dj = 1;
  } else if (s == "DL") {
    di = 1;
    dj = 0;
  } else if (s == "DR") {
    di = 1;
    dj = 1;
  }
  rebota(i, j, di, dj);
  long long int coste = 1, costeant;
  int puntas = 0;
  while (not sehavisto(i, j, di, dj)) {
    marcavisto(i, j, di, dj);
    puntas += (i == 0 and j == 0) or (i == n - 1 and j == 0) or
              (i == 0 and j == m - 1) or (i == n - 1 and j == m - 1);
    if (puntas == 2) break;
    costeant = coste;
    if (di == 0 and dj == 0) {
      if (i >= j) {
        coste += j;
        i -= j;
        j = 0;
      } else {
        coste += i;
        j -= i;
        i = 0;
      }
    } else if (di == 0 and dj == 1) {
      if (i >= m - 1 - j) {
        coste += m - 1 - j;
        i -= (m - 1 - j);
        j = m - 1;
      } else {
        coste += i;
        j += i;
        i = 0;
      }
    } else if (di == 1 and dj == 0) {
      if (n - 1 - i >= j) {
        coste += j;
        i += j;
        j = 0;
      } else {
        coste += n - 1 - i;
        j -= (n - 1 - i);
        i = n - 1;
      }
    } else if (di == 1 and dj == 1) {
      if (n - 1 - i >= m - 1 - j) {
        coste += m - 1 - j;
        i += (m - 1 - j);
        j = m - 1;
      } else {
        coste += n - 1 - i;
        j += (n - 1 - i);
        i = n - 1;
      }
    }
    rebota(i, j, di, dj);
  }
  if (puntas != 2) coste = costeant;
  bool error = false;
  int paridad = 1 - vistoi[0][0][1][1];
  for (int j = paridad; j < m and not error; j += 2)
    error = not(vistoi[0][j][1][0] or vistoi[0][j][1][1]);
  for (int i = paridad; i < n and not error; i += 2)
    error = not(vistoj[0][i][0][1] or vistoj[0][i][1][1]);
  int paridadi = paridad;
  if (n % 2 == 0) paridadi = 1 - paridad;
  for (int j = paridadi; j < m and not error; j += 2)
    error = not(vistoi[1][j][0][0] or vistoi[1][j][0][1]);
  int paridadj = paridad;
  if (m % 2 == 0) paridadj = 1 - paridad;
  for (int i = paridadj; i < n and not error; i += 2)
    error = not(vistoj[1][i][0][0] or vistoj[1][i][1][0]);
  if (error)
    cout << -1 << endl;
  else {
    cout << coste << endl;
  }
}
