#include<bits/stdc++.h>
using namespace std;
char str[103][103],dir[50009];
int main()
{
int r,c,koyta,i,j,a,b,x,y,k,counter;
while(scanf("%d%d%d",&r,&c,&koyta)&&(r|c|koyta))
{
getchar();
for(i=0; i<r; i++)
{
gets(str[i]);
}
gets(dir);
bool tag = false;
counter = 0;
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
{
if(str[i][j]>='L' && str[i][j]<='S')
{
tag = true;
x = i;
y = j;
break;
}
}
if(tag)break;
}
if(str[x][y]=='N')
{
if(x-1>=0 && x-1<r)
a = x-1;
b = y;
k=1;
}
else if(str[x][y]=='S')
{
if(x+1>=0 && x+1<r)
a = x+1;
b = y;
k=2;
}
else if(str[x][y]=='L')
{
a = x;
if(y+1>=0 && y+1<c)
b = y+1;
k=3;
}
else if(str[x][y]=='O')
{
a = x;
if(y-1>=0 && y-1<c)
b = y-1;
k=4;
}
str[x][y] = '.';
for(i=0; i<koyta; i++)
{
if(dir[i]=='D')
{
if(k==1)
{
a = x;
if(b+1>=0 && b+1<c)
b = y+1;
k=3;
}
else if(k==2)
{
a = x;
if(b-1>=0 && b-1<c)
b = y-1;
k=4;
}
else if(k==3)
{
if(a+1>=0 && a+1<r)
a = x+1;
b = y;
k=2;
}
else if(k==4)
{
if(a-1>=0 && a-1<r)
a = x-1;
b = y;
k=1;
}
}
else if(dir[i]=='E')
{
if(k==1)
{
a = x;
if(b-1>=0 && b-1<c)
b = y-1;
k=4;
}
else if(k==2)
{
a = x;
if(b+1>=0 && b+1<c)
b = y+1;
k=3;
}
else if(k==3)
{
if(a-1>=0 && a-1<r)
a = x-1;
b = y;
k=1;
}
else if(k==4)
{
if(a+1>=0 && a+1<r)
a = x+1;
b = y;
k=2;
}
}
else if(dir[i]=='F')
{
if(str[a][b]=='*')
{
counter++;
str[a][b] = '.';
x=a;
y=b;
if(k==1)
{
if(x-1>=0 && x-1<r)
a = x-1;
b = y;
}
else if(k==2)
{
if(x+1>=0 && x+1<r)
a = x+1;
b = y;
}
else if(k==3)
{
a = x;
if(y+1>=0 && y+1<c)
b = y+1;
}
else if(k==4)
{
a = x;
if(y-1>=0 && y-1<c)
b = y-1;
}
}
else if(str[a][b]=='.')
{
x = a;
y = b;
if(k==1)
{
if(x-1>=0 && x-1<r)
a = x-1;
b = y;
}
else if(k==2)
{
if(x+1>=0 && x+1<r)
a = x+1;
b = y;
}
else if(k==3)
{
a = x;
if(y+1>=0 && y+1<c)
b = y+1;
}
else if(k==4)
{
a = x;
if(y-1>=0 && y-1<c)
b = y-1;
}
}
}
}
printf("%d\n",counter);
memset(str,'\0',sizeof str);
}
return 0;
}