#include <bits/stdc++.h>
using namespace std;
int main()
{
int r, c, m; cin >> r >> c >> m;
char grid[r+2][c+2];
for(int i = 0; i < r+2; i++){
for(int j = 0; j < c+2; j++){
grid[i][j] = '#';
}
}
bool noQuestions = true;
for(int i = 1; i <= r; i++){
for(int j = 1; j <= c; j++){
cin>>grid[i][j];
}
}
char message[m];
for(int i = 0; i < m; i++){
cin >> message[i];
if(message[i]=='?')
noQuestions = false;
}
if(r <= 100 && c <= 100 && noQuestions){
set<pair<int,int>> finalPos;
for(int i = 1; i <= r; i++){
for(int j = 1; j <= c; j++){
pair<int,int> curPos = {i,j};
bool validPath = true;
for(char c : message){
if(c=='N')
curPos = {curPos.first-1, curPos.second};
else if (c=='S')
curPos = {curPos.first+1, curPos.second};
else if (c=='W')
curPos = {curPos.first, curPos.second-1};
else
curPos = {curPos.first, curPos.second+1};
if(grid[curPos.first][curPos.second] == '#'){
validPath = false;
break;
}
}
if(validPath){
finalPos.insert(curPos);
}
}
}
cout << finalPos.size();
}
return 0;
}