#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
const int INF = 0x3f3f3f3f;
int n, m, k, sx, sy, dx, dy;
char s[5];
vector<pair<int, int> > b[2];
bool flag;
long long ans = 0;
inline int Abs(const int &x) { return x < 0 ? -x : x; }
void add(int x, int y) {
  b[0].push_back(make_pair(x - y, x)), b[1].push_back(make_pair(x + y, x));
}
void Run() {
  int opt = !(dx == dy);
  pair<int, int> p = opt ? make_pair(sx + sy, sx) : make_pair(sx - sy, sx);
  vector<pair<int, int> >::iterator it =
      upper_bound(b[opt].begin(), b[opt].end(), p);
  for (; it->first != p.first; --it)
    ;
  for (; dx < 0 && it->second >= sx; --it)
    ;
  ans += Abs(sx - it->second) - 1;
  sx = it->second, sy = opt ? (it->first - sx) : (sx - it->first);
  bool A =
      binary_search(b[0].begin(), b[0].end(), make_pair(sx - sy - dx, sx - dx));
  bool B = binary_search(b[0].begin(), b[0].end(), make_pair(sx - sy + dy, sx));
  if (A == B)
    flag = 1, dx = -dx, dy = -dy;
  else {
    if (A) sx -= dx, dy = -dy;
    if (B) sy -= dy, dx = -dx;
  }
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i <= n + 1; i++) add(i, m + 1), add(i, 0);
  for (int i = 1; i <= m; i++) add(0, i), add(n + 1, i);
  for (int i = 1, x, y; i <= k; i++) scanf("%d%d", &x, &y), add(x, y);
  scanf("%d%d%s", &sx, &sy, s);
  dx = (s[0] == 'N' ? -1 : 1), dy = (s[1] == 'W' ? -1 : 1);
  sort(b[0].begin(), b[0].end()), sort(b[1].begin(), b[1].end());
  Run();
  int tx = sx, ty = sy, tdx = dx, tdy = dy;
  ans = 0;
  for (Run(); sx != tx || sy != ty || tdx != dx || tdy != dy; Run())
    ;
  if (flag) ans /= 2;
  printf("%I64d\n", ans);
  return 0;
}
