#include <iostream>
#include <set>
using namespace std;
char mas[101][101];
int r, c, m;
string st;
set<pair<int, int>> mt;
void dfs(int i, int j, int kurs){
if(mas[i][j]=='#')
return;
if(kurs==st.size()){
mt.insert({i, j});
return;
}
int k=kurs+1;
bool ja=0;
if(st[kurs]=='?') ja=1;
if(st[kurs]=='N' || ja)
dfs(i-1, j, k);
if(st[kurs]=='S'|| ja)
dfs(i+1, j, k);
if(st[kurs]=='W'|| ja)
dfs(i, j-1, k);
if(st[kurs]=='E'|| ja)
dfs(i, j+1, k);
}
void dg(){
for(int i=0; i<=r+1; i++){
for(int j=0; j<=c+1; j++){
cout<<mas[i][j];
}
cout<<endl;
}
}
int main()
{
cin>>r>>c>>m;
for(int i=0; i<=c+1; i++)
mas[0][i]='#', mas[r+1][i]='#';
for(int i=0; i<=r+1; i++)
mas[i][0]='#', mas[i][c+1]='#';
for(int i=1; i<=r; i++){
for(int j=1; j<=c; j++){
cin>>mas[i][j];
}
}
cin>>st;
int atb=0;
for(int i=1; i<=r; i++){
for(int j=1; j<=c; j++){
dfs(i, j, 0);
}
}
cout<<mt.size()<<endl;
return 0;
}