#include <bits/stdc++.h>
using namespace std;
int n;
string s, deny[100005], w, g;
char love;
bool check(string s)
{
for(int i = 1; i <= n; i++) if(s.find(deny[i]) != s.npos) return false;
return true;
}
bool cmp(string a, string b)
{
if(a.size() != b.size()) return a.size() < b.size();
else return a < b;
}
string tosm(string ggg)
{
for(int i = 0; i < ggg.size(); i++) if(ggg[i] <= 'Z' && ggg[i] >= 'A') ggg[i] += 32;
return ggg;
}
string back(string gg)
{
for(int i = 0; i < gg.size(); i++)
{
if(s[i] <= 'Z' && s[i] >= 'A') gg[i] -= 32;
}
return gg;
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> deny[i];
deny[i] = tosm(deny[i]);
}
cin >> s >> love;
w = tosm(s), g = tosm(s);
sort(deny + 1, deny + n + 1, cmp);
for(int i = 1; i <= n; i++)
{
int flag = 0;
while(g.find(deny[i], flag) != g.npos)
{
int pos = g.find(deny[i], flag);
for(int j = pos; j < deny[i].size() + pos; j++)
{
if(deny[i][j - pos] == love)
{
if(love == 'a')
{
if(w[j] == 'b') w[i] = 'a';
else if(w[j] == 'a') w[j] = 'b';
}
else if(love == 'b')
{
if(w[j] == 'a') w[i] = 'b';
else if(w[j] == 'b') w[j] = 'a';
}
else w[j] = 'a';
}
else
{
w[j] = love;
}
}
flag = deny[i].size() + pos;
}
}
cout << back(w) << endl;
return 0;
}