#include <iostream>
#include <algorithm>
using namespace std;
int n,m,h,i,j,M[1010][1010],vert[1010],oriz[1010],Min;
char c;
int main()
{

    cin>>n>>m>>h;
    cin.get();
    for(i=1; i<=n; ++i)
    {
        for(j=1; j<=m; ++j)
        {
            cin.get(c);
            if(c=='#')
                M[i][j]=-1;
        }
        cin.get();
    }
    for(i=1; i<=h; ++i)
    {
        for(j=1; j<=m; ++j)
        {
            cin.get(c);
            if(c=='#')
                ++vert[j];
        }
        cin.get();
    }
    for(i=1; i<=h; ++i)
    {
        for(j=1; j<=n; ++j)
        {
            cin.get(c);
            if(c=='#')
                ++oriz[n-j+1];
        }
        cin.get();
    }
    for(i=n; i>=1; --i)
        for(j=m; j>=1; --j)
            if(M[i][j]==-1)
            {
                Min=min(vert[j],oriz[i]);
                if(Min>0)
                {
                    M[i][j]=Min;
                    if(vert[j]>oriz[i])
                        oriz[i]-=Min;
                    else vert[j]-=Min;
                }
                else
                {
                    if(vert[j]==0)
                    {
                        if(oriz[i]==0)
                            M[i][j]=min(M[i+1][j],M[i][j+1]);
                        else
                        {
                            Min=min(M[i+1][j],oriz[i]);
                            M[i][j]=Min;
                            if(Min==oriz[i])
                                oriz[i]=0;
                        }
                    }
                    else
                    {
                        Min=min(M[i][j+1],vert[j]);
                        M[i][j]=Min;
                        if(Min==vert[j])
                            vert[j]=0;
                    }
                }

            }
    for(i=1; i<=n; ++i)
    {
        for(j=1; j<=m; ++j)
        {
            if(M[i][j]>0)
                cout<<M[i][j];
            else cout<<'.';
        }
        cout<<'\n';
    }

    return 0;
}