#include<iostream>
#include<tuple>
#include<vector>
#include<algorithm>
#include<queue>
#include<functional>
using namespace std;
int H, W, N, F, sx, sy, gx, gy, a[1000000], b[1000000], d[1000000], e[1000000], dist[660][660]; char c[1000000];
pair<int, int>mae[660][660];
vector<tuple<int, int, int>>x[660][660];
int main() {
cin >> H >> W >> N >> F;
cin >> sx >> sy >> gx >> gy;
for (int i = 0; i < N; i++) {
cin >> a[i] >> b[i] >> c[i] >> d[i] >> e[i];
for (int j = 1; j <= W; j++) {
int cost = 0;
if (c[i] == 'N' || c[i] == 'S')cost = abs(abs(j - b[i]) - d[i])*F + e[i];
if (c[i] == 'E')cost = min(abs((j - b[i]) - d[i])*F, abs((j - b[i]) + d[i])*F + e[i]);
if (c[i] == 'W')cost = min(abs((j - b[i]) - d[i])*F + e[i], abs((j - b[i]) + d[i])*F);
x[a[i]][b[i]].push_back(make_tuple(a[i], j, cost));
}
for (int j = 1; j <= H; j++) {
int cost = 0;
if (c[i] == 'E' || c[i] == 'W')cost = abs(abs(j - a[i]) - d[i])*F + e[i];
if (c[i] == 'S')cost = min(abs((j - a[i]) - d[i])*F, abs((j - a[i]) + d[i])*F + e[i]);
if (c[i] == 'N')cost = min(abs((j - a[i]) - d[i])*F + e[i], abs((j - a[i]) + d[i])*F);
x[a[i]][b[i]].push_back(make_tuple(j, b[i], cost));
}
}
priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, greater<tuple<int, int, int>>>Q;
for (int i = 1; i <= H; i++) { for (int j = 1; j <= W; j++)dist[i][j] = 1999999999; }
Q.push(make_tuple(0, sx, sy)); dist[sx][sy] = 0;
while (!Q.empty()) {
int a1 = get<0>(Q.top()), a2 = get<1>(Q.top()), a3 = get<2>(Q.top()); Q.pop();
for (int i = 0; i < x[a2][a3].size(); i++) {
int to1 = get<0>(x[a2][a3][i]), to2 = get<1>(x[a2][a3][i]), cost = get<2>(x[a2][a3][i]);
if (dist[to1][to2] > a1 + cost) {
dist[to1][to2] = a1 + cost; Q.push(make_tuple(dist[to1][to2], to1, to2));
mae[to1][to2] = make_pair(a2, a3);
}
}
}
int ret = dist[gx][gy];
if (ret == 1999999999)ret = -1;
vector<pair<int, int>>r1; int cx = gx, cy = gy;
while (true) {
if (mae[cx][cy] == make_pair(0, 0))break;
r1.push_back(make_pair(cx, cy));
pair<int, int>J = mae[cx][cy]; cx = J.first; cy = J.second;
}
reverse(r1.begin(), r1.end());
cout << ret << endl;
//for (int i = 0; i < r1.size(); i++)cout << r1[i].first << ' ' << r1[i].second << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHR1cGxlPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8cXVldWU+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBILCBXLCBOLCBGLCBzeCwgc3ksIGd4LCBneSwgYVsxMDAwMDAwXSwgYlsxMDAwMDAwXSwgZFsxMDAwMDAwXSwgZVsxMDAwMDAwXSwgZGlzdFs2NjBdWzY2MF07IGNoYXIgY1sxMDAwMDAwXTsKcGFpcjxpbnQsIGludD5tYWVbNjYwXVs2NjBdOwp2ZWN0b3I8dHVwbGU8aW50LCBpbnQsIGludD4+eFs2NjBdWzY2MF07CmludCBtYWluKCkgewoJY2luID4+IEggPj4gVyA+PiBOID4+IEY7CgljaW4gPj4gc3ggPj4gc3kgPj4gZ3ggPj4gZ3k7Cglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewoJCWNpbiA+PiBhW2ldID4+IGJbaV0gPj4gY1tpXSA+PiBkW2ldID4+IGVbaV07CgkJZm9yIChpbnQgaiA9IDE7IGogPD0gVzsgaisrKSB7CgkJCWludCBjb3N0ID0gMDsKCQkJaWYgKGNbaV0gPT0gJ04nIHx8IGNbaV0gPT0gJ1MnKWNvc3QgPSBhYnMoYWJzKGogLSBiW2ldKSAtIGRbaV0pKkYgKyBlW2ldOwoJCQlpZiAoY1tpXSA9PSAnRScpY29zdCA9IG1pbihhYnMoKGogLSBiW2ldKSAtIGRbaV0pKkYsIGFicygoaiAtIGJbaV0pICsgZFtpXSkqRiArIGVbaV0pOwoJCQlpZiAoY1tpXSA9PSAnVycpY29zdCA9IG1pbihhYnMoKGogLSBiW2ldKSAtIGRbaV0pKkYgKyBlW2ldLCBhYnMoKGogLSBiW2ldKSArIGRbaV0pKkYpOwoJCQl4W2FbaV1dW2JbaV1dLnB1c2hfYmFjayhtYWtlX3R1cGxlKGFbaV0sIGosIGNvc3QpKTsKCQl9CgkJZm9yIChpbnQgaiA9IDE7IGogPD0gSDsgaisrKSB7CgkJCWludCBjb3N0ID0gMDsKCQkJaWYgKGNbaV0gPT0gJ0UnIHx8IGNbaV0gPT0gJ1cnKWNvc3QgPSBhYnMoYWJzKGogLSBhW2ldKSAtIGRbaV0pKkYgKyBlW2ldOwoJCQlpZiAoY1tpXSA9PSAnUycpY29zdCA9IG1pbihhYnMoKGogLSBhW2ldKSAtIGRbaV0pKkYsIGFicygoaiAtIGFbaV0pICsgZFtpXSkqRiArIGVbaV0pOwoJCQlpZiAoY1tpXSA9PSAnTicpY29zdCA9IG1pbihhYnMoKGogLSBhW2ldKSAtIGRbaV0pKkYgKyBlW2ldLCBhYnMoKGogLSBhW2ldKSArIGRbaV0pKkYpOwoJCQl4W2FbaV1dW2JbaV1dLnB1c2hfYmFjayhtYWtlX3R1cGxlKGosIGJbaV0sIGNvc3QpKTsKCQl9Cgl9Cglwcmlvcml0eV9xdWV1ZTx0dXBsZTxpbnQsIGludCwgaW50PiwgdmVjdG9yPHR1cGxlPGludCwgaW50LCBpbnQ+PiwgZ3JlYXRlcjx0dXBsZTxpbnQsIGludCwgaW50Pj4+UTsKCWZvciAoaW50IGkgPSAxOyBpIDw9IEg7IGkrKykgeyBmb3IgKGludCBqID0gMTsgaiA8PSBXOyBqKyspZGlzdFtpXVtqXSA9IDE5OTk5OTk5OTk7IH0KCVEucHVzaChtYWtlX3R1cGxlKDAsIHN4LCBzeSkpOyBkaXN0W3N4XVtzeV0gPSAwOwoJd2hpbGUgKCFRLmVtcHR5KCkpIHsKCQlpbnQgYTEgPSBnZXQ8MD4oUS50b3AoKSksIGEyID0gZ2V0PDE+KFEudG9wKCkpLCBhMyA9IGdldDwyPihRLnRvcCgpKTsgUS5wb3AoKTsKCQlmb3IgKGludCBpID0gMDsgaSA8IHhbYTJdW2EzXS5zaXplKCk7IGkrKykgewoJCQlpbnQgdG8xID0gZ2V0PDA+KHhbYTJdW2EzXVtpXSksIHRvMiA9IGdldDwxPih4W2EyXVthM11baV0pLCBjb3N0ID0gZ2V0PDI+KHhbYTJdW2EzXVtpXSk7CgkJCWlmIChkaXN0W3RvMV1bdG8yXSA+IGExICsgY29zdCkgewoJCQkJZGlzdFt0bzFdW3RvMl0gPSBhMSArIGNvc3Q7IFEucHVzaChtYWtlX3R1cGxlKGRpc3RbdG8xXVt0bzJdLCB0bzEsIHRvMikpOwoJCQkJbWFlW3RvMV1bdG8yXSA9IG1ha2VfcGFpcihhMiwgYTMpOwoJCQl9CgkJfQoJfQoJaW50IHJldCA9IGRpc3RbZ3hdW2d5XTsKCWlmIChyZXQgPT0gMTk5OTk5OTk5OSlyZXQgPSAtMTsKCXZlY3RvcjxwYWlyPGludCwgaW50Pj5yMTsgaW50IGN4ID0gZ3gsIGN5ID0gZ3k7Cgl3aGlsZSAodHJ1ZSkgewoJCWlmIChtYWVbY3hdW2N5XSA9PSBtYWtlX3BhaXIoMCwgMCkpYnJlYWs7CgkJcjEucHVzaF9iYWNrKG1ha2VfcGFpcihjeCwgY3kpKTsKCQlwYWlyPGludCwgaW50PkogPSBtYWVbY3hdW2N5XTsgY3ggPSBKLmZpcnN0OyBjeSA9IEouc2Vjb25kOwoJfQoJcmV2ZXJzZShyMS5iZWdpbigpLCByMS5lbmQoKSk7Cgljb3V0IDw8IHJldCA8PCBlbmRsOwoJLy9mb3IgKGludCBpID0gMDsgaSA8IHIxLnNpemUoKTsgaSsrKWNvdXQgPDwgcjFbaV0uZmlyc3QgPDwgJyAnIDw8IHIxW2ldLnNlY29uZCA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=