#include <bits/stdc++.h>
using namespace std;
#define F(W) for(int i = 0; i < W; i++)
#define FF(W) for(int j = 0; j < W; j++)
#define FFF(W) for(int k = 0; k < W; k++)
#define ZERO (1e-10)
#define EPS ZERO
#define INF (1 << 30)
#define LINF (1LL << 60)
#define NINF (-(1 << 30))
#define MP(A, B) make_pair(A, B)
#define PBC(G, A) G.push_back(A);
#define CL(A, I) (memset(A, I, sizeof(A)))
#define ADD(A, B, V) (g[A].push_back(B); g[B].push_back(A); v[A].push_back(V); v[B].push_back(V))
#define add(A, B) (g[A].push_back(B), g[B].push_back(A))
#define DEB printf("DEB!\n");
#define DEX printf("DEX!\n");
#define DRI(a) int a; scanf("%d ", &a);
#define DRII(a, b) int a, b; scanf("%d %d ", &a, &b);
#define DRIII(a, b, c) int a, b, c; scanf("%d %d %d %d ", &a, &b, &c);
#define DRIIII(a, b, c, d) int a, b, c, d; scanf("%d %d %d %d ", &a, &b, &c, &d);
#define EQ(A, B) (A+ZERO>B&&A-ZERO<B)
#define FND(P, K, N) (lower_bound(P, P+N, K)-P);
#define SW(A, B) (swap(A, B))
#define REP(i, n) for (int i = 0; i < n; i++)
#define IN(n) int n; cin >> n;
#define PB push_back
#define MX (1024)
typedef long long ll;
typedef unsigned long long llu;
typedef pair<int, int> pii;
typedef pair<int, int> ii;
typedef pair<int, double> pid;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
int M,N,xa,xb,ya,yb,dx,dy;
char a,b,A[MX][MX],B[MX][MX],D[MX][MX];
void fnd(int &x,int &y,char C[MX][MX]){
x=y=0;
F(N)FF(M)if(C[i][j]==b){x=i,y=j;return;}
}
void ptt(int x,int y){
if(x<0||y<0||x>=N||y>=M)return;
D[x][y]=b;
}
int main(void){
while(scanf("%d%d %c %c %c",&N,&M,&a,&b,&a),N){
fgets(*A,MX,stdin);
F(N)fgets(A[i],MX,stdin);
fgets(*B,MX,stdin);
F(N)fgets(B[i],MX,stdin);
fnd(xa,ya,A),fnd(xb,yb,B);
F(N)FF(M+2)D[i][j]=A[i][j]==b?B[i][j]:A[i][j];
dx=xb-xa;dy=yb-ya;
F(N)FF(M)if(B[i][j]==b)ptt(i+dx,j+dy);
F(N)printf("%s",D[i]);
putchar_unlocked('\n');
}
return 0;
}