#include <bits/stdc++.h>
using namespace std;
char tip[500][501] , operatie[5001];
bitset <500> posibil[2][500] , initial[500];
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[0][linie].set(coloana); initial[linie].set(coloana); }
}
}
for (int indice = 0 ; indice < numar_operatii ; indice++)
{
if (operatie[indice] == 'E' || operatie[indice] == '?') {
for (int linie = 0 ; linie < linii ; linie++)
{ posibil[1][linie] |= (posibil[0][linie] << 1); }
}
if (operatie[indice] == 'W' || operatie[indice] == '?') {
for (int linie = 0 ; linie < linii ; linie++)
{ posibil[1][linie] |= (posibil[0][linie] >> 1); }
}
if (operatie[indice] == 'S' || operatie[indice] == '?') {
for (int linie = 1 ; linie < linii ; linie++)
{ posibil[1][linie] |= posibil[0][linie - 1]; }
}
if (operatie[indice] == 'N' || operatie[indice] == '?') {
for (int linie = 0 ; linie + 1 < linii ; linie++)
{ posibil[1][linie] |= posibil[0][linie + 1]; }
}
for (int linie = 0 ; linie < linii ; linie++)
{
posibil[0][linie] = posibil[1][linie];
posibil[0][linie] &= initial[linie];
posibil[1][linie].reset();
}
}
int total = 0;
for (int linie = 0 ; linie < linii ; linie++)
{ total += posibil[0][linie].count(); }
cout << total;
return 0;
}