#include<bits/stdc++.h>
using namespace std;
int n,m,k,a[10001],vis[1001][52][51];
int dx[5]={0,-1,0,1,0};
int dy[5]={0,0,1,0,-1};
char mp[1001][1001],ans[1001][1001];
string fx;
void dfs(int x,int y,int deep){
if(vis[deep][x][y]) return ;
vis[deep][x][y]=1;
if(deep==k+1){
ans[x][y]='*';
return ;
}
int s=1;
while(x+s*dx[a[deep]]<=n&&x+s*dx[a[deep]]>0&&y+s*dy[a[deep]]<=m&&y+s*dy[a[deep]]>0&&mp[x+s*dx[a[deep]]][y+s*dy[a[deep]]]!='X'){
if(mp[x+s*dx[a[deep]]][y+s*dy[a[deep]]]=='.')
dfs(x+s*dx[a[deep]],y+s*dy[a[deep]],deep+1);
s++;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
cin>>mp[i][j],ans[i][j]=mp[i][j];
cin>>k;
for(int i=1;i<=k;++i){
cin>>fx;
if(fx=="NORTH") a[i]=1;
else if(fx=="EAST") a[i]=2;
else if(fx=="SOUTH") a[i]=3;
else a[i]=4;
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(mp[i][j]=='*'){
mp[i][j]='.';
ans[i][j]='.';
dfs(i,j,1);
}
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
cout<<ans[i][j];
}
cout<<endl;
}
return 0;
}