#include <iostream>
#include <string>
using namespace std;
struct data
{
string xau;
} typedef data;
int main ()
{
long long N, M, K, X;
cin>>N>>M>>K>>X;
string MH;
cin>>MH;
data S[502];
for (int i=1; i<=M; i++)
{
cin>>S[i].xau;
for (int j=0; j<K; j++)
{
for (int k=0; k<K-1; k++)
{
int so_k=S[i].xau[k]-0;
int so_k1=S[i].xau[k+1]-0;
if (so_k>so_k1)
{
char tg=S[i].xau[k];
S[i].xau[k]=S[i].xau[k+1];
S[i].xau[k+1]=tg;
}
}
}
}
int stt=M;
for (int i=N-1; i>=0; i--)
{
if (MH[i]=='#')
{
if (X%K==0)
{
MH[i]=S[stt].xau[K-1];
X=(X/K);
}
else
{
MH[i]=S[stt].xau[(X%K)-1];
X=(X/K)+1;
}
stt--;
}
}
cout<<MH;
return 0;
}