#include <bits/stdc++.h>
using namespace std;
const int N = 400050;
set<int> sa[N], sb[N], sn[N];
int n, m, k;
inline void add(int a, int b) {
  sn[a].insert(b);
  sa[a + b].insert(a - b);
  sb[a - b + m + 1].insert(a + b);
}
inline void del(int a, int b) {
  sn[a].erase(b);
  sa[a + b].erase(a - b);
  sb[a - b + m + 1].erase(a + b);
}
inline int exist(int x, int y) { return sn[x].find(y) != sn[x].end(); }
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1, a, b; i <= k; ++i) {
    scanf("%d%d", &a, &b);
    add(a, b);
  }
  for (int i = 0; i <= n + 1; ++i) add(i, 0), add(i, m + 1);
  for (int j = 0; j <= m + 1; ++j) add(0, j), add(n + 1, j);
  int x = 1, y = 1, dx = 1, dy = 1;
  char op[4];
  scanf("%d%d%s", &x, &y, op);
  add(x, y);
  sn[x].erase(y);
  if (op[0] == 'N')
    dx = -1;
  else
    dx = +1;
  if (op[1] == 'W')
    dy = -1;
  else
    dy = +1;
  int sx(x), sy(y), sdx(dx), sdy(dy);
  long long res = 0;
  int first = 1, times = 1;
  for (;; first = 0) {
    if (x == sx && y == sy && dx == sdx && dy == sdy && !first) break;
    if (x == sx && y == sy && !first) times = 2;
    if (dx == 1 && dy == 1) {
      auto u = sb[x - y + m + 1].upper_bound(x + y);
      if (u == sb[x - y + m + 1].end()) throw;
      int nx = (*u + x - y) / 2, ny = -(x - y - nx);
      res += (nx - x);
      if (nx == sx && ny == sy) {
        x = nx;
        y = ny;
        continue;
      }
      if (exist(nx, ny - 1))
        if (!exist(nx - 1, ny)) {
          dx = -1, dy = 1;
          x = nx - 1, y = ny;
        } else {
          x = nx - 1, y = ny - 1;
          dx *= -1;
          dy *= -1;
        }
      else if (exist(nx - 1, ny)) {
        dx = 1, dy = -1;
        x = nx, y = ny - 1;
      } else {
        x = nx - 1, y = ny - 1;
        dx *= -1;
        dy *= -1;
      }
      first = 0;
      continue;
    }
    if (dx == -1 && dy == -1) {
      auto u = sb[x - y + m + 1].lower_bound(x + y);
      if (u == sb[x - y + m + 1].begin()) throw;
      --u;
      int nx = (*u + x - y) / 2, ny = -(x - y - nx);
      res += (x - nx);
      if (nx == sx && ny == sy) {
        x = nx;
        y = ny;
        continue;
      }
      if (exist(nx, ny + 1))
        if (!exist(nx + 1, ny)) {
          dx = 1, dy = -1;
          x = nx + 1, y = ny;
        } else {
          x = nx + 1, y = ny + 1;
          dx *= -1;
          dy *= -1;
        }
      else if (exist(nx + 1, ny)) {
        dx = -1, dy = 1;
        x = nx, y = ny + 1;
      } else {
        x = nx + 1, y = ny + 1;
        dx *= -1;
        dy *= -1;
      }
      first = 0;
      continue;
    }
    if (dx == 1 && dy == -1) {
      auto u = sa[x + y].upper_bound(x - y);
      if (u == sa[x + y].end()) throw;
      int nx = (*u + x + y) / 2, ny = (x + y - *u) / 2;
      res += (nx - x);
      if (nx == sx && ny == sy) {
        x = nx;
        y = ny;
        continue;
      }
      if (exist(nx, ny + 1))
        if (!exist(nx - 1, ny)) {
          dx = -1, dy = -1;
          x = nx - 1, y = ny;
        } else {
          x = nx - 1, y = ny + 1;
          dx *= -1;
          dy *= -1;
        }
      else if (exist(nx - 1, ny)) {
        dx = 1, dy = 1;
        x = nx, y = ny + 1;
      } else {
        x = nx - 1, y = ny + 1;
        dx *= -1;
        dy *= -1;
      }
      first = 0;
      continue;
    }
    if (dx == -1 && dy == 1) {
      auto u = sa[x + y].lower_bound(x - y);
      if (u == sa[x + y].begin()) throw;
      --u;
      int nx = (*u + x + y) / 2, ny = (x + y - *u) / 2;
      res += (x - nx);
      if (nx == sx && ny == sy) {
        x = nx;
        y = ny;
        continue;
      }
      if (exist(nx, ny - 1))
        if (!exist(nx + 1, ny)) {
          dx = +1, dy = +1;
          x = nx + 1, y = ny;
        } else {
          x = nx + 1, y = ny - 1;
          dx *= -1;
          dy *= -1;
        }
      else if (exist(nx + 1, ny)) {
        dx = -1, dy = -1;
        x = nx, y = ny - 1;
      } else {
        x = nx + 1, y = ny - 1;
        dx *= -1;
        dy *= -1;
      }
      first = 0;
      continue;
    }
  }
  printf("%I64d\n", res / times);
  return 0;
}
