#include<bits/stdc++.h>
using namespace std;
char s[60][60];
char op[20];
int a[60][60];
int h[1010],l[1010];
int sea[60][60][60];
int t;
int n,m;
void dfs(int x,int y,int ii){
for(int i=ii;i<=t;i++){
if(ii+2==i){
return;
}
int xx=x+h[i];
int yy=y+l[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!=1&&s[xx][yy]!='X'&&sea[xx][yy][i]!=1){//cnt这是可以优化
dfs(xx,yy,i);
sea[xx][yy][i]=1;
if(i==t){
a[xx][yy]=-1;
}
}
// else{
// if(){
// //这是else if(){}的由来吗?
// }
// }
}
}
int main(){
scanf("%d%d",&n,&m);
int bx,by;
for(int i=1;i<=n;i++){
scanf("%s",s[i]+1);
for(int j=1;j<=m;j++){
if(s[i][j]=='X'){
a[i][j]=1;
}
if(s[i][j]=='*'){
bx=i;
by=j;
}
}
}
scanf("%d",&t);
for(int i=1;i<=t;i++){
scanf("%s",op+1);
if(op[1]=='N'){
h[i]=-1;
l[i]=0;
}
else if(op[1]=='W'){
l[i]=-1;
h[i]=0;
}
else if(op[1]=='S'){
h[i]=1;
l[i]=0;
}
else if(op[1]=='E'){
l[i]=1;
h[i]=0;
}
}
dfs(bx+h[1],by+l[1],1);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==1){
printf("X");
}
else if(a[i][j]==-1){
printf("*");
}
else{
printf(".");
}
}
printf("\n");
}
return 0;
}