#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>

using namespace std;

void test(int i, int sizeX, int & minX, int & minY, int & maxX, int & maxY)
{
	int x = i % sizeX;
	int y = i / sizeX;
	
	if(x < minX) minX = x;
	if(x > maxX) maxX = x;
	
	if(y < minY) minY = y;
	if(y > maxY) maxY = y;
}

int main()
{
	string numero;
	
	while(cin.good())
	{
		int x, y;
		char symbol;
		
		if(scanf(" %d %d '%c'\n", &y, &x, &symbol) != 3) break;
		if(x == 0 && y == 0 && symbol == ' ') break;
		
		char * bg, * first, * second;
		bg = new char[x * y];
		first = new char[x * y];
		second = new char[x * y];
		
		int * fmin, *fmax, * smin, * smax;
		fmin = new int[x];
		fmax = new int[x];
		smin = new int[x];
		smax = new int[x];
		
		for(int i = 0; i < x; i++)
		{
			fmin[i] = smin[i] = y + 1;
			fmax[i] = smax[i] = -1;
		}
		
		int minX1 = x + 1, minX2 = x + 1, maxX1 = -1, maxX2 = -1;
		
		int i = 0;
		
		do
		{
			char c;
			while(scanf("%c", &c) == 1 && c != '\n')
			{
				if(c == symbol)
				{
					first[i] = c;
					
					test(i, x, minX1, fmin[i % x], maxX1, fmax[i % x]);
				}
				else 
				{
					bg[i] = c;
					first[i] = ' ';
				}
				
				i++;
			}
			
		}
		while(i < x * y);
		
		i = 0;
		
		do
		{
			char c;
			while(scanf("%c", &c) == 1 && c != '\n')
			{
				if(c == symbol)
				{
					second[i] = c;
					
					test(i, x, minX2, smin[i % x], maxX2, smax[i % x]);
				}
				else 
				{
					bg[i] = c;
					second[i] = ' ';
				}
				
				i++;
			}
		}
		while(i < x * y);
		
		/*for(int i = 0; i < x * y; i++)
		{
			if(i % x == 0) cout << endl;
			printf("%c", bg[i]);
		}
		
		for(int i = 0; i < x * y; i++)
		{
			if(i % x == 0) cout << endl;
			printf("%c", first[i]);
		}
		
		for(int i = 0; i < x * y; i++)
		{
			if(i % x == 0) cout << endl;
			printf("%c", second[i]);
		}
		
		printf("%d %d\n", minX1, maxX1);
		
		for(int i = 0; i < x; i++)
			printf("%d - %d\n", fmin[i], fmax[i]);*/
		
		int moveX;
		if(minX1 == minX2) moveX = maxX2 - maxX1;
		else moveX = minX2 - minX1;
		
		//printf("movex %d\n", moveX);
		
		int minY1 = y + 1, maxY1 = -1, minY2 = y + 1, maxY2 = -1;
		
		for(int i = 0; i < x; i++)
		{
			if(fmin[i] < minY1) minY1 = fmin[i];
			if(fmax[i] > maxY1) maxY1 = fmax[i];
		}
		
		if(moveX < 0)
		{
			for(int i = 0; i < x + moveX; i++)
			{
				if(smin[i] < minY2) minY2 = smin[i];
				if(smax[i] > maxY2) maxY2 = smax[i];
			}
		}
		else
		{
			for(int i = moveX; i < x; i++)
			{
				if(smin[i] < minY2) minY2 = smin[i];
				if(smax[i] > maxY2) maxY2 = smax[i];
			}
		}
		
		int moveY;
		if(minY1 == minY2) moveY = maxY2 - maxY1;
		else moveY = minY2 - minY1;
		
		//printf("movey %d\n", moveY);
		
		for(int i = 0; i < x * y; i++)
		{
			int px = i % x - moveX;
			int py = i / x - moveY;
			
			if(px >= 0 && px < x
			&& py >= 0 && py < y
			&& second[py * x + px] == symbol)
				printf("%c", symbol);
			else
				printf("%c", bg[i]);
			
			if(i % x == x - 1) printf("\n");
		}
		
		printf("\n");
		
		delete [] fmin;
		delete [] fmax;
		delete [] smin;
		delete [] smax;
		
		delete [] bg;
		delete [] first;
		delete [] second;
	}

	return 0;
}