#include <iostream>
#include <stdio.h>
#include <math.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<list>
#include <cassert>

using namespace std;

int m, n;
char c;

pair<int, int> locate(vector<string> const& arr)
{
  	for (int i = 0; i < m; ++i)
		{
			for (int j = 0; j < n; ++j)
			{
				if (arr[i][j] == c)
					return make_pair(i, j);
			}
		}

		assert(false);
}

int main()
{
	while (1) {
		scanf("%d %d '%c'\n", &m, &n, &c);

		if (n == 0 && m == 0)
			break;

		vector<string> before(m), after(m);
		for (int i = 0; i < m; ++i)
			cin >> before[i];

		scanf("\n");
		for (int i = 0; i < m; ++i)
			cin >> after[i];

		scanf("\n");
		pair<int, int> pbefore = locate(before);
		pair<int, int> pafter = locate(after);

		string tmp;
		for (int i = 0; i < n; ++i)
			tmp += '\0';

		vector<string> final(m, tmp);
		
		for (int i = 0; i < m; ++i)
		{
			for (int j = 0; j < n; ++j)
			{
				if (after[i][j] == c)
				{
					int x = pafter.first - pbefore.first + i;
					int y = pafter.second - pbefore.second + j;

					if (x >= 0 && x < m && y >= 0 && y < n)
						final[x][y] = c;
				}
				
				if (final[i][j] != c)
				{
					if (before[i][j] != c)
						final[i][j] = before[i][j];
					else
						final[i][j] = after[i][j];
				}
			}
		}

		for (int i = 0; i < m; ++i)
			cout << final[i] << endl;
		cout << endl;

	}
	return 0;
}