#include<iostream> #include<fstream> #include<algorithm> #include<cstring> #include<vector> #include<string> #include<queue> #include<cstdlib> #include<ctime> #include<map> #define in cin #define out cout #define abs(x) ((x>0)?(x):(-(x))) #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) #define FOR(i, a, b) for(int i = a; i <= b; ++i) #define DOWNFOR(i, a, b) for(int i = a; i >= b; --i) #define FOREACH(i, t) for (typeof(t.begin()) i = t.begin(); i != t.end(); ++i) using namespace std; typedef long long ll; const int Nmax = 1001; int v[Nmax][Nmax]; string C[2][Nmax]; int a[Nmax],b[Nmax]; int c[Nmax][Nmax]; int n,m,h; int main(){ #ifndef ONLINE_JUDGE ifstream in("test.in"); ofstream out("test.out"); #endif in>>n>>m>>h; string s; FOR(i,1,n){ in>>s; FOR(j,0,m-1){ if(s[j]=='#') v[i][j+1]=1; else v[i][j+1]=0; } } FOR(i,1,h) in>>C[0][i]; FOR(i,1,h) in>>C[1][i]; for(int i=0;i<m;i++){ int j=h+1; while(C[0][j-1][i]=='#') a[i+1]++,j--; } for(int i=0;i<n;i++){ int j=h+1; while(C[1][j-1][i]=='#') b[i+1]++,j--; } FOR(i,1,n){ int j=1; while(j<=m && ( !v[i][j] || (v[i][j] && c[i][j]) ) ) j++; if(j<=m) c[i][j]=b[i]; } FOR(j,1,m){ int i=1; while(i<=n && ( !v[i][j] || (v[i][j] && c[i][j]) ) ) i++; if(i<=n) c[i][j]=a[j]; } FOR(i,1,n){ FOR(j,1,m){ if(!c[i][j]) out<<'.'; else out<<c[i][j]; } out<<'\n'; } return 0; }