#include <iostream>
#include <stdio.h>
#include <string>
#include <list>

using namespace std;

struct sou
{
	int x;
	int y;
};


int main()
{
	char C;
	int N,M;
	scanf("%i %i '%c'",&N,&M, &C);
	list<sou> falcon;
	list<sou> falcon2;

	while(N > 0)
	{
		char mapa[N][M];

		falcon.clear();
		falcon2.clear();
		
        for(int i = 0; i < N; i++)
		{
			for(int x = 0; x < M; x++)
			{
                mapa[i][x] = C; //prasana

			}
        }

		//img1
		for(int i = 0; i < N; i++)
		{
			for(int x = 0; x < M; x++)
			{
				char c;
				cin >> c;
				// add falcon
				if(c == C)
				{
					sou fs;
					fs.x = i;
					fs.y = x;
					falcon.push_back(fs);
				}

				// load map, not falcon though
				if(mapa[i][x] == C && c != C)
				{
					mapa[i][x] = c;
				}	
			}
		}
	
		//img2
		for(int i = 0; i < N; i++)
		{
			for(int x = 0; x < M; x++)
			{
				char c;
				cin >> c;
				// add falcon
				if(c == C)
				{
					sou fs;
					fs.x = i;
					fs.y = x;
					falcon2.push_back(fs);
				}

				// load map, not falcon tho
				if(mapa[i][x] == C && c != C)
				{
					mapa[i][x] = c;
				}	
			}
		}

		//offset falcona
		sou off;
		off.x = falcon2.begin()->x - falcon.begin()->x;
		off.y = falcon2.begin()->y - falcon.begin()->y;
		
		for(auto it = falcon2.begin(); it != falcon2.end(); ++it)
		{
			int a,b;

			a = it->x + off.x;
			b = it->y + off.y;		

			if(a < N && b < M && a >= 0 && b >= 0) // mem errors?
			{
				mapa[a][b] = C;
			}
		}
		
		//print map 2
		for(int i = 0; i < N; i++)
		{
			for(int x = 0; x < M; x++)
			{
				cout << mapa[i][x];
			}
			cout << endl;
		}
		
		// repeat
		cout << endl;
		scanf("%i %i '%c'",&N,&M, &C);
	}

	return 0;
}