#include <bits/stdc++.h>
using namespace std;
char tip[500][501] , operatie[5001];
bool posibil[500][500][2];
int main ()
{
ios :: sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int linii , coloane , numar_operatii;
cin >> linii >> coloane >> numar_operatii;
for (int linie = 0 ; linie < linii ; linie++)
{ cin >> tip[linie]; }
cin >> operatie;
for (int linie = 0 ; linie < linii ; linie++) {
for (int coloana = 0 ; coloana < coloane ; coloana++) {
if (tip[linie][coloana] == '.')
{ posibil[linie][coloana][0] = true; }
}
}
for (int indice = 0 ; indice < numar_operatii ; indice++)
{
for (int linie = 0 ; linie < linii ; linie++) {
for (int coloana = 0 ; coloana < coloane ; coloana++) {
if (posibil[linie][coloana][0]) {
if ((operatie[indice] == 'E' || operatie[indice] == '?') && coloana + 1 < coloane && tip[linie][coloana + 1] == '.')
{ posibil[linie][coloana + 1][1] = true; }
if ((operatie[indice] == 'W' || operatie[indice] == '?') && coloana > 0 && tip[linie][coloana - 1] == '.')
{ posibil[linie][coloana - 1][1] = true; }
if ((operatie[indice] == 'S' || operatie[indice] == '?') && linie + 1 < linii && tip[linie + 1][coloana] == '.')
{ posibil[linie + 1][coloana][1] = true; }
if ((operatie[indice] == 'N' || operatie[indice] == '?') && linie > 0 && tip[linie - 1][coloana] == '.')
{ posibil[linie - 1][coloana][1] = true; }
}
}
}
for (int linie = 0 ; linie < linii ; linie++) {
for (int coloana = 0 ; coloana < coloane ; coloana++)
{ posibil[linie][coloana][0] = posibil[linie][coloana][1]; posibil[linie][coloana][1] = false; }
}
}
int total = 0;
for (int linie = 0 ; linie < linii ; linie++) {
for (int coloana = 0 ; coloana < coloane ; coloana++)
{ total += (posibil[linie][coloana][0] ? 1 : 0); }
}
cout << total;
return 0;
}