#include <bits/stdc++.h>
using namespace std;
struct node {
  long long x, y, num;
} a[600005];
long long n, m, k, cnt, sx, sy, snode, ff, T, fx[600005][4], bj[600005][4],
    ans = 0;
bool jilu[600005][4], vis[600005][4];
string sdir;
bool cmp_left_to_right(node x, node y) {
  if (x.x - x.y == y.x - y.y)
    return x.y < y.y;
  else
    return x.x - x.y < y.x - y.y;
}
bool cmp_right_to_left(node x, node y) {
  if (x.x + x.y == y.x + y.y)
    return x.y > y.y;
  else
    return x.x + x.y < y.x + y.y;
}
bool cmpx(node x, node y) {
  if (x.x == y.x)
    return x.y < y.y;
  else
    return x.x < y.x;
}
bool cmpy(node x, node y) {
  if (x.y == y.y)
    return x.x < y.x;
  else
    return x.y < y.y;
}
bool cmp(node x, node y) { return x.num < y.num; }
bool she(long long pos) {
  ff ^= 2;
  if ((!bj[pos][ff] && !bj[pos][(ff + 1) % 4]) ||
      (bj[pos][ff] && bj[pos][(ff + 1) % 4]))
    T = pos;
  else if (bj[pos][ff])
    T = bj[pos][ff], ff = (ff + 1) % 4;
  else
    T = bj[pos][(ff + 1) % 4], ff = (ff + 3) % 4;
  if (vis[T][ff]) return false;
  vis[T][ff] = true;
  if (!jilu[T][ff]) {
    ans += abs(a[T].x - a[fx[T][ff]].x) - 1;
    jilu[T][ff] = jilu[fx[T][ff]][ff ^ 2] = true;
  }
  return true;
}
signed main() {
  scanf("%lld%lld%lld", &n, &m, &k);
  a[++cnt].x = 0, a[cnt].y = 0, a[cnt].num = cnt;
  a[++cnt].x = n + 1, a[cnt].y = 0, a[cnt].num = cnt;
  a[++cnt].x = 0, a[cnt].y = m + 1, a[cnt].num = cnt;
  a[++cnt].x = n + 1, a[cnt].y = m + 1, a[cnt].num = cnt;
  for (long long i = 1; i <= n; i++) {
    a[++cnt].x = i, a[cnt].y = 0, a[cnt].num = cnt;
    a[++cnt].x = i, a[cnt].y = m + 1, a[cnt].num = cnt;
  }
  for (long long i = 1; i <= m; i++) {
    a[++cnt].x = 0, a[cnt].y = i, a[cnt].num = cnt;
    a[++cnt].x = n + 1, a[cnt].y = i, a[cnt].num = cnt;
  }
  for (long long i = 1; i <= k; i++) {
    cnt++;
    scanf("%lld%lld", &a[cnt].x, &a[cnt].y);
    a[cnt].num = cnt;
  }
  scanf("%lld%lld", &sx, &sy);
  cin >> sdir;
  for (long long i = 1; i <= cnt; i++)
    if (a[i].x - a[i].y == sx - sy) {
      if (sdir[0] == 'N' && sdir[1] == 'W' && a[i].y < sy)
        ff = 0, snode = (!snode || a[i].y > a[snode].y) ? i : snode;
      if (sdir[0] == 'S' && sdir[1] == 'E' && a[i].y > sy)
        ff = 2, snode = (!snode || a[i].y < a[snode].y) ? i : snode;
    }
  for (long long i = 1; i <= cnt; i++)
    if (a[i].x + a[i].y == sx + sy) {
      if (sdir[0] == 'N' && sdir[1] == 'E' && a[i].y > sy)
        ff = 1, snode = (!snode || a[i].y < a[snode].y) ? i : snode;
      if (sdir[0] == 'S' && sdir[1] == 'W' && a[i].y < sy)
        ff = 3, snode = (!snode || a[i].y > a[snode].y) ? i : snode;
    }
  sort(a + 1, a + cnt + 1, cmp_left_to_right);
  for (long long i = 1; i < cnt; i++)
    if (a[i].x - a[i].y == a[i + 1].x - a[i + 1].y) {
      fx[a[i].num][2] = a[i + 1].num;
      fx[a[i + 1].num][0] = a[i].num;
    }
  sort(a + 1, a + cnt + 1, cmp_right_to_left);
  for (long long i = 1; i < cnt; i++)
    if (a[i].x + a[i].y == a[i + 1].x + a[i + 1].y) {
      fx[a[i].num][3] = a[i + 1].num;
      fx[a[i + 1].num][1] = a[i].num;
    }
  sort(a + 1, a + cnt + 1, cmpx);
  for (long long i = 1; i < cnt; i++)
    if (a[i].x == a[i + 1].x && a[i].y + 1 == a[i + 1].y) {
      bj[a[i].num][2] = a[i + 1].num;
      bj[a[i + 1].num][0] = a[i].num;
    }
  sort(a + 1, a + cnt + 1, cmpy);
  for (long long i = 1; i < cnt; i++)
    if (a[i].y == a[i + 1].y && a[i].x + 1 == a[i + 1].x) {
      bj[a[i].num][3] = a[i + 1].num;
      bj[a[i + 1].num][1] = a[i].num;
    }
  sort(a + 1, a + cnt + 1, cmp);
  she(snode);
  while (she(fx[T][ff]))
    ;
  printf("%lld\n", ans);
  return 0;
}
