#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int N,M;
char C;
char img1[1000*1000];
char img2[1000*1000];
#define IMG1(x,y) (img1[y*N+x])
#define IMG1c(x,y) (((x)<0)||((y)<0)||((x)>=N)||((y)>=M)?0:IMG1((x),(y)))
#define IMG2(x,y) (img2[(y)*N+(x)])
#define IMG2c(x,y) (((x)<0)||((y)<0)||((x)>=N)||((y)>=M)?0:IMG2((x),(y)))

int main() {
	int x,y,c;
	int s1x, s1y, s2x, s2y, sdx, sdy;
	while (true) {
		scanf("%d %d '%c'\n", &N,&M,&C);
		//printf("--- %d %d %c ---\n", N,M,C);
		if (!N && !M && (C==' ')) break;
		s1x=-1;
		for (x=0; x<N; x++) {
			for (y=0; y<M; y++) {
				do {
					c=getchar();
				} while ((c<33) || (c>126));
				IMG1(x,y)=c;
				if ((s1x<0) && (c==C)) {
					s1x=x;
					s1y=y;
				}
			}
		}
		s2x=-1;
		for (x=0; x<N; x++) {
			for (y=0; y<M; y++) {
				do {
					c=getchar();
				} while ((c<33) || (c>126));
				IMG2(x,y)=c;
				if ((s2x<0) && (c==C)) {
					s2x=x;
					s2y=y;
				}
			}
		}
		
		sdx=s2x-s1x;
		sdy=s2y-s1y;
		for (x=0; x<N; x++) {
			for (y=0; y<M; y++) {
				if (IMG2c(x-sdx, y-sdy)==C) {
					putchar(C);
				} else {
					putchar(IMG1(x,y)!=C ? IMG1(x,y):IMG2(x,y));
				}
			}
			putchar('\n');
		}
		putchar('\n');
	}
	return 0;
}