#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, m, k;
cin >> n >> m >> k;
char arr[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> arr[i][j];
}
}
string s;
cin >> s;
int dp[k + 1][n][m];
for (int p = 0; p <= k; p++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (p == 0 && arr[i][j] != '#') dp[p][i][j] = 1;
else dp[p][i][j] = 0;
}
}
}
int di[4] = {0, 0, -1, 1};
int dj[4] = {1, -1, 0, 0};
for (int p = 0; p < k; p++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (dp[p][i][j] == 0) continue;
if (s[p] != '?') {
char sp = s[p];
int ci = i, cj = j;
if (sp == 'W') cj--;
if (sp == 'S') ci++;
if (sp == 'N') ci--;
if (sp == 'E') cj++;
if (ci < 0 || ci >= n || cj < 0 || cj >= m || arr[ci][cj] == '#') continue;
dp[p + 1][ci][cj] = 1;
} else {
for (int l = 0; l < 4; l++) {
int ci = i + di[l];
int cj = j + dj[l];
if (ci < 0 || ci >= n || cj < 0 || cj >= m || arr[ci][cj] == '#') continue;
dp[p + 1][ci][cj] = 1;
}
}
}
}
// for (int i = 0; i < n; i++) {
// for (int j = 0; j < m; j++) {
// cout << dp[p][i][j] << ' ';
// }
// cout << '\n';
// }
// cout << '\n';
}
// for (int i = 0; i < n; i++) {
// for (int j = 0; j < m; j++) {
// cout << dp[k][i][j] << ' ';
// }
// cout << '\n';
// }
// cout << '\n';
int ct = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
ct += dp[k][i][j];
}
}
cout << ct;
return 0;
}
/*
1 1 1
.
N
*/