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

int main(){

	char **background;
	char **falcon;
	char f;
	int m,n,i,j;
	int fLeft,fRight,fTop,fBot;
	int ffX,ffY,ffX2,ffY2;
	int diffSet;


	while(1){
	
	scanf("%d%d",&m,&n);
	while(getchar()!=39){}
	f=getchar();
	while(getchar()!='\n'){}

	if((m==0)&&(n==0)&&(f==' ')){
		break;
	}
	ffX=-1;
	ffY=-1;
	fLeft=n;
	fRight=0;
	fTop=m;
	fBot=0;
	diffSet=0;
	
	
	background=(char**)malloc(m*sizeof(char*));
	for(i=0;i<m;i++){
		background[i]=(char*)malloc(n*sizeof(char));
		for(j=0;j<n;j++){
			char temp=getchar();
			if(temp==f){
				if(ffX==-1){
					ffX=j;
					ffY=i;					
				}
				if(j<fLeft) fLeft=j;
				if(j>fRight) fRight=j;
				if(i>fBot) fBot=i;
				if(i<fTop) fTop=i;
				background[i][j]=0;
			}
			else background[i][j]=temp;
		}
		getchar();
	}

	getchar();
	falcon=(char**)malloc((fBot-fTop)*sizeof(char*));
	for(i=0;i<(fBot-fTop+1);i++){
		falcon[i]=(char*)malloc((fRight-fLeft+1)*sizeof(char));
		for(j=0;j<fRight-fLeft+1;j++){
			falcon[i][j]=0;
		}
	}
	
	for(i=0;i<m;i++){
		for(j=0;j<n;j++){
			char temp=getchar();
			if(temp==f){
				if(diffSet==0){
					ffX2=j-ffX;
					ffY2=i-ffY;
					diffSet=1;
				}
				falcon[i-fTop-ffY2][j-fLeft-ffX2]=temp;
			}
			else{
				if(background[i][j]==0) background[i][j]=temp;
			}
		}
		getchar();
	}

	for(i=0;i<fBot-fTop+1;i++){
		for(j=0;j<fRight-fLeft+1;j++){
			if((falcon[i][j]!=0)&&(fTop+2*ffY2+i>=0)&&(fTop+2*ffY2+i<=m)&&(fLeft+2*ffX2+j>=0)&&(fLeft+2*ffX2+j<=n))background[fTop+2*ffY2+i][fLeft+2*ffX2+j]=f;
		}
	}



	for(i=0;i<m;i++){
		for(j=0;j<n;j++){
			putchar(background[i][j]);
		}
		putchar('\n');
	}





	}

	return 0;
}