#include <bits/stdc++.h>
using namespace std;

#define REP(i,n) for(int i = 0; i < (n); ++i)
#define FOR(i,a,b) for(int i = (a); i <= (b); ++i)
#define FORD(i,a,b) for(int i = (a); i >= (b); --i)

#define maxN 1005

#define pii pair<int,int>
#define mp make_pair
#define X first
#define Y second

int M, N;
char falcon;

char obr[3][maxN][maxN];
pii pos[2];
pii diff;

bool inside(int a, int b) {
  return a >= 0 && a < M && b >= 0 && b < N;
}

int main() {
  bool first = true;
  char c1, c2;
  char str[50];
  while (scanf("%d%d %s", &M, &N, str) == 3) {
    if (M == 0) break;
    falcon = str[1];
//    printf("%d %d %s\n", M, N, str);
//    str[0] = falcon;
//    str[1] = 0;
//    printf("%s\n", str);
    if (!first) printf("\n");
    first = false;
    REP(k, 2) {
      REP(i, M) {
        scanf("%s", obr[k][i]);
      }
    }
    REP(k, 2) {
      bool ok = false;
      REP(i, M) {
        if (ok) break;
        REP(j, N) {
          if (obr[k][i][j] == falcon) {
            pos[k] = {i, j};
            ok = true;
            break;
          }
        }
      }
    }
    diff.X = pos[1].X - pos[0].X;
    diff.Y = pos[1].Y - pos[0].Y;
    REP(i, M) REP(j, N) {
      obr[2][i][j] = (obr[0][i][j] == falcon) ? obr[1][i][j] : obr[0][i][j];
      int i2 = i - diff.X;
      int j2 = j - diff.Y;
      if (inside(i2, j2) && obr[1][i2][j2] == falcon) obr[2][i][j] = falcon;
//      printf("%d,%d: %d,%d\n", i, j, i2, j2);
    }
    REP(i, M) {
      printf("%s\n", obr[2][i]);
    }
  }
  return 0;
}