#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;
}