#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int add = 100001;
map<int, int> g[N];
set<pair<int, int> > s1[233333], s2[233333];
pair<int, int> p[N];
int n, m, k;
inline void in(int x, int y) {
  g[x][y] = 1;
  pair<int, int> t = make_pair(x, y);
  s2[x + y].insert(t);
  s1[x - y + add].insert(t);
  return;
}
void next(int x, int y, int d, int &x1, int &y1, int &d1, int &tx, int &ty) {
  if (!d) {
    set<pair<int, int> >::iterator it =
        s1[x - y + add].lower_bound(make_pair(x, y));
    it--;
    pair<int, int> t = *it;
    tx = t.first, ty = t.second;
    bool a, b;
    if (g[tx + 1][ty])
      a = 1;
    else
      a = 0;
    if (g[tx][ty + 1])
      b = 1;
    else
      b = 0;
    if (!a && b)
      x1 = tx + 1, y1 = ty, d1 = 2;
    else if (a && !b)
      x1 = tx, y1 = ty + 1, d1 = 1;
    else
      x1 = tx + 1, y1 = ty + 1, d1 = 3;
  } else if (d == 1) {
    set<pair<int, int> >::iterator it = s2[x + y].lower_bound(make_pair(x, y));
    it--;
    pair<int, int> t = *it;
    tx = t.first, ty = t.second;
    bool a, b;
    if (g[tx + 1][ty])
      a = 1;
    else
      a = 0;
    if (g[tx][ty - 1])
      b = 1;
    else
      b = 0;
    if (!a && b)
      x1 = tx + 1, y1 = ty, d1 = 3;
    else if (a && !b)
      x1 = tx, y1 = ty - 1, d1 = 0;
    else
      x1 = tx + 1, y1 = ty - 1, d1 = 2;
  } else if (d == 2) {
    set<pair<int, int> >::iterator it = s2[x + y].upper_bound(make_pair(x, y));
    pair<int, int> t = *it;
    tx = t.first, ty = t.second;
    bool a, b;
    if (g[tx - 1][ty])
      a = 1;
    else
      a = 0;
    if (g[tx][ty + 1])
      b = 1;
    else
      b = 0;
    if (!a && b)
      x1 = tx - 1, y1 = ty, d1 = 0;
    else if (a && !b)
      x1 = tx, y1 = ty + 1, d1 = 3;
    else
      x1 = tx - 1, y1 = ty + 1, d1 = 1;
  } else {
    set<pair<int, int> >::iterator it =
        s1[x - y + add].upper_bound(make_pair(x, y));
    pair<int, int> t = *it;
    tx = t.first, ty = t.second;
    bool a, b;
    if (g[tx - 1][ty])
      a = 1;
    else
      a = 0;
    if (g[tx][ty - 1])
      b = 1;
    else
      b = 0;
    if (!a && b)
      x1 = tx - 1, y1 = ty, d1 = 1;
    else if (a && !b)
      x1 = tx, y1 = ty - 1, d1 = 2;
    else
      x1 = tx - 1, y1 = ty - 1, d1 = 0;
  }
  return;
}
inline int ab(int x) {
  if (x > 0) return x;
  return -x;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= k; i++) {
    scanf("%d%d", &p[i].first, &p[i].second);
    in(p[i].first, p[i].second);
  }
  for (int i = 0; i <= n + 1; i++) {
    in(i, 0);
    in(i, m + 1);
  }
  for (int i = 0; i <= m + 1; i++) {
    in(0, i);
    in(n + 1, i);
  }
  int x, y, d = 0, tx, ty, td, px, py, dd;
  int xx, yy;
  scanf("%d%d", &x, &y);
  char tt[5];
  scanf("%s", &tt);
  if (tt[0] == 'S') d += 2;
  if (tt[1] == 'E') d++;
  next(x, y, d, x, y, d, px, py);
  xx = x, yy = y, dd = d;
  long long ans = 0;
  int f = 1;
  while (1) {
    next(x, y, d, tx, ty, td, px, py);
    ans += (int)ab(x - px);
    if (tx == xx && ty == yy && td == dd) break;
    if (td + d == 3) f = 2;
    x = tx, y = ty, d = td;
  }
  printf("%I64d\n", ans / (long long)f);
  return 0;
}
