#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > seg[2];
int n, m, k, x, y, dX, dY;
bool flag = 0;
long long ans;
void add(int tx, int ty) {
  seg[0].push_back(pair<int, int>(tx - ty, tx));
  seg[1].push_back(pair<int, int>(tx + ty, tx));
}
void reflect() {
  int fc;
  if (dX == dY)
    fc = 0;
  else
    fc = 1;
  pair<int, int> p = (fc) ? pair<int, int>(x + y, x) : pair<int, int>(x - y, x);
  vector<pair<int, int> >::iterator it =
      upper_bound(seg[fc].begin(), seg[fc].end(), p);
  while (it->first != p.first) it--;
  if (dX < 0)
    while (it->second >= x) it--;
  ans += abs(x - it->second) - 1;
  x = it->second;
  y = (fc) ? (it->first - x) : (x - it->first);
  bool A = binary_search(seg[0].begin(), seg[0].end(),
                         pair<int, int>(x - y - dX, x - dX));
  bool B = binary_search(seg[0].begin(), seg[0].end(),
                         pair<int, int>(x - y + dY, x));
  if (A == B)
    flag = 1, dX = -dX, dY = -dY;
  else {
    if (A)
      x -= dX, dY = -dY;
    else if (B)
      y -= dY, dX = -dX;
  }
}
int main() {
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 1; i <= m; i++) add(0, i), add(n + 1, i);
  for (int i = 0; i <= n + 1; i++) add(i, 0), add(i, m + 1);
  for (int i = 1; i <= k; i++) {
    scanf("%d %d", &x, &y);
    add(x, y);
  }
  scanf("%d %d", &x, &y);
  char c = getchar();
  while (c != 'N' && c != 'S' && c != 'W' && c != 'E') c = getchar();
  if (c == 'N')
    dX = -1;
  else
    dX = 1;
  c = getchar();
  if (c == 'W')
    dY = -1;
  else
    dY = 1;
  sort(seg[0].begin(), seg[0].end());
  sort(seg[1].begin(), seg[1].end());
  reflect();
  int sx = x, sy = y, sdx = dX, sdy = dY;
  ans = 0;
  do reflect();
  while (!(x == sx && y == sy && dX == sdx && dY == sdy));
  printf("%lld\n", (flag) ? (ans >> 1) : ans);
  return 0;
}
