#include <bits/stdc++.h>
using namespace std;
set<int> obs[2][200003];
map<int, bool> is[100002];
int n, m, fac = 1;
const int dx[4] = {-1, -1, 1, 1}, dy[4] = {-1, 1, 1, -1};
bool add;
void add_obs(int x, int y) {
  obs[0][x - y + m + 1].insert(x);
  obs[1][x + y].insert(x);
  is[x][y] = true;
}
long long ans;
pair<pair<int, int>, int> nxt(int x, int y, int d) {
  set<int>::iterator it =
      obs[d & 1][d & 1 ? x + y : x - y + m + 1].lower_bound(x);
  if (dx[d] == -1) --it;
  if (add) ans += abs(*it - x);
  int newx = (*it) - dx[d];
  int dist = abs(x - newx);
  int newy = y + dist * dy[d];
  bool a = is[newx][newy + dy[d]], b = is[newx + dx[d]][newy];
  if (a && !b)
    return make_pair(make_pair(newx + dx[d], newy), d ^ 1);
  else if (!a && b)
    return make_pair(make_pair(newx, newy + dy[d]), d ^ 3);
  else {
    fac = 2;
    return make_pair(make_pair(newx, newy), d ^ 2);
  }
}
int main() {
  int k;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= k; ++i) {
    int t1, t2;
    scanf("%d%d", &t1, &t2);
    add_obs(t1, t2);
  }
  for (int i = 0; i <= n + 1; ++i) {
    add_obs(i, 0);
    add_obs(i, m + 1);
  }
  for (int i = 1; i <= m; ++i) {
    add_obs(0, i);
    add_obs(n + 1, i);
  }
  pair<pair<int, int>, int> st;
  char tmp[10];
  scanf("%d%d%s", &st.first.first, &st.first.second, tmp);
  st.second = (tmp[0] == 'S' ? 2 : 0);
  st.second ^= ((st.second >> 1) ^ (tmp[1] != 'W'));
  st = nxt(st.first.first, st.first.second, st.second);
  pair<pair<int, int>, int> init = st;
  add = true;
  for (st = nxt(st.first.first, st.first.second, st.second); st != init;)
    st = nxt(st.first.first, st.first.second, st.second);
  printf("%lld", ans / fac);
  return 0;
}
