//zelovoc
#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<cstring>
#include<cmath>

using namespace std;
#define For(i,n) for(int i = 0; i<int(n); ++i)
#define INF 1023456789
#define LINF 1023456789123456789LL

typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<int> vint;

#define db(x) //cerr << #x << " = " << x << endl

int r, s;
char f, trol;
char A[1047][1047];
char B[1047][1047];
char C[1047][1047];
pii pa, pb, pc;

int main() {
	while(scanf("%d %d %c%c%c ", &r, &s, &trol, &f, &trol) > 0 && r > 0) {
		For(i, r) For(j, s+4) C[i][j] = 0;
		pa = pb = pii(1047,1047);
		For(i, r) scanf(" %s ", A[i]);
		For(i, r) scanf(" %s ", B[i]);
		For(i, r) For(j, s) {
			C[i][j] = (A[i][j]==f)?B[i][j]:A[i][j];
			if (A[i][j] == f) pa = min(pa, pii(i,j));
			if (B[i][j] == f) pb = min(pb, pii(i,j));
		}
		pc = pii(pb.first - pa.first, pb.second - pa.second);
		For(i, r) For(j, s) {
			if (B[i][j] == f) {
				int x = i + pc.first, y = j + pc.second;
				if (x<0 || y<0 || x>=r || y>=s) continue;
				C[x][y] = f;
			} 
		}
		For(i, r) printf("%s\n", C[i]);
		printf("\n");
	}
}