#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:36777216")
template <class T>
inline void RD(T &x) {
  cin >> x;
}
inline int RD() {
  int x;
  RD(x);
  return x;
}
template <class T>
inline void RD(T &x0, T &x1) {
  RD(x0), RD(x1);
}
template <class T>
inline void RD(T &x0, T &x1, T &x2) {
  RD(x0), RD(x1), RD(x2);
}
template <class T>
inline void RD(T &x0, T &x1, T &x2, T &x3) {
  RD(x0), RD(x1), RD(x2), RD(x3);
}
template <class T>
inline void RD(T &x0, T &x1, T &x2, T &x3, T &x4) {
  RD(x0), RD(x1), RD(x2), RD(x3), RD(x4);
}
template <class T>
inline void RD(T &x0, T &x1, T &x2, T &x3, T &x4, T &x5) {
  RD(x0), RD(x1), RD(x2), RD(x3), RD(x4), RD(x5);
}
template <class T>
inline void RST(T &A) {
  memset(A, 0, sizeof(A));
}
template <class T>
inline void RST(T &A0, T &A1) {
  RST(A0), RST(A1);
}
template <class T>
inline void RST(T &A0, T &A1, T &A2) {
  RST(A0), RST(A1), RST(A2);
}
template <class T>
inline void RST(T &A0, T &A1, T &A2, T &A3) {
  RST(A0), RST(A1), RST(A2), RST(A3);
}
template <class T>
inline void RST(T &A0, T &A1, T &A2, T &A3, T &A4) {
  RST(A0), RST(A1), RST(A2), RST(A3), RST(A4);
}
template <class T>
inline void RST(T &A0, T &A1, T &A2, T &A3, T &A4, T &A5) {
  RST(A0), RST(A1), RST(A2), RST(A3), RST(A4), RST(A5);
}
template <class T>
inline void FLC(T &A, int x) {
  memset(A, x, sizeof(A));
}
template <class T>
inline void FLC(T &A0, T &A1, int x) {
  FLC(A0, x), FLC(A1, x);
}
template <class T>
inline void FLC(T &A0, T &A1, T &A2, int x) {
  FLC(A0, x), FLC(A1, x), FLC(A2, x);
}
template <class T>
inline void FLC(T &A0, T &A1, T &A2, T &A3, int x) {
  FLC(A0, x), FLC(A1, x), FLC(A2, x), FLC(A3, x);
}
template <class T>
inline void FLC(T &A0, T &A1, T &A2, T &A3, T &A4, int x) {
  FLC(A0, x), FLC(A1, x), FLC(A2, x), FLC(A3, x), FLC(A4, x);
}
template <class T>
inline void FLC(T &A0, T &A1, T &A2, T &A3, T &A4, T &A5, int x) {
  FLC(A0, x), FLC(A1, x), FLC(A2, x), FLC(A3, x), FLC(A4, x), FLC(A5, x);
}
template <class T>
inline void checkMin(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkMax(T &a, T b) {
  if (b > a) a = b;
}
const int MOD = 1000000007;
const int INF = 0x7fffffff;
const int N = 101;
char T[N], _P[N][N], *P, t;
int pi[N];
bool C[N], M[N];
int Tn, Pn, n;
int main() {
  ios::sync_with_stdio();
  RD(n);
  for (int i = 0; i < int(n); ++i) RD(_P[i]);
  RD(T);
  RD(t);
  Tn = int(strlen(T));
  for (int i = 0; i < int(Tn); ++i)
    if (T[i] <= 'Z') T[i] += 32, C[i] = true;
  for (int i = 0; i < int(n); ++i) {
    P = _P[i];
    Pn = int(strlen(P));
    for (int i = 0; i < int(Pn); ++i)
      if (P[i] <= 'Z') P[i] += 32;
    for (int i = 0; i <= Tn - Pn; ++i) {
      int j;
      for (j = 0; j < int(Pn); ++j)
        if (T[i + j] != P[j]) break;
      if (j == Pn)
        for (j = 0; j < int(Pn); ++j) M[i + j] = true;
    }
  }
  char t_ = t == 'a' ? 'b' : 'a';
  for (int i = 0; i < int(Tn); ++i)
    cout << char((M[i] ? T[i] == t ? t_ : t : T[i]) - (C[i] ? 32 : 0));
}
