#include <bits/stdc++.h>
using namespace std;
struct dot
{
long long px,py,step;
}t,now;
string s;
queue <dot> q;
long long r,c,m,a[1005];
char ch[55][55],chans[55][55];
int main()
{
scanf("%lld%lld",&r,&c);
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
cin>>ch[i][j];
chans[i][j]=ch[i][j];
}
scanf("%lld",&m);
for(int i=1;i<=m;i++)
{
cin>>s;
if(s=="NORTH") a[i]=1;
else if(s=="SOUTH") a[i]=2;
else if(s=="WEST") a[i]=3;
else a[i]=4;
}
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
if(ch[i][j]=='*')
{
t.px=i;
t.py=j;
q.push(t);
}
}
while(!q.empty())
{
t=q.front();
q.pop();
if(t.step==m) chans[t.px][t.py]='*';
long long k=t.step+1;
if(a[k]==1)
{
for(int i=1;;i++)
{
if(t.px-i<1) break;
if(ch[t.px-i][t.py]!='X')
{
now.px=t.px-i;
now.py=t.py;
now.step=k;
q.push(now);
}
}
}
else if(a[k]==2)
{
for(int i=1;;i++)
{
if(t.px+i>r) break;
if(ch[t.px+i][t.py]!='X')
{
now.px=t.px+i;
now.py=t.py;
now.step=k;
q.push(now);
}
}
}
else if(a[k]==3)
{
for(int i=1;;i++)
{
if(t.py-i<1) break;
if(ch[t.px][t.py-i]!='X')
{
now.px=t.px;
now.py=t.py-i;
now.step=k;
q.push(now);
}
}
}
else
{
for(int i=1;;i++)
{
if(t.py+i>c) break;
if(ch[t.px][t.py+i]!='X')
{
now.px=t.px;
now.py=t.py+i;
now.step=k;
q.push(now);
}
}
}
}
for(int i=1;i<=r;i++)
{
for(int j=1;j<=c;j++) cout<<chans[i][j];
cout<<endl;
}
return 0;
}