#include <bits/stdc++.h>
using namespace std;
#define int long long
const int M = 60;
int ncr[M][M];
map<pair<int,int>,int> se[M][2];
signed main()
{
for (int i=0;i<M;i++)
{
ncr[i][0]=1;
for (int j=1;j<=i;j++)
ncr[i][j]=ncr[i-1][j]+ncr[i-1][j-1];
}
int n,m,k;
cin>>n>>m;
string a[n];
for (int i=0;i<n;i++)
cin>>a[i];
cin>>k;
int val=0, id=0;
se[a[0][0]-'a'][0][{1,1}]=1;
string ans;
for (int ct=0;ct<n+m-1;ct++)
{
for (int j=0;j<26;j++)
{
int su=0, x, y;
for (auto e:se[j][id])
x=e.first.first, y=e.first.second, su+=ncr[n+m-x-y][n-x]*e.second;
if (val+su>=k)
{
ans+=char('a'+j);
for (int c=0;c<M;c++) se[c][1-id].clear();
for (auto e:se[j][id])
{
x=e.first.first, y=e.first.second;
if (x<n) se[a[x][y-1]-'a'][1-id][{x+1,y}]+=e.second;
if (y<m) se[a[x-1][y]-'a'][1-id][{x,y+1}]+=e.second;
}
id=1-id;
break;
}
else
val+=su;
}
}
cout<<ans<<endl;
}