#include <cstdio>
#include <algorithm>
#define Nmax 1005

using namespace std;

char a[Nmax][Nmax];
int xorin[Nmax], xorana[Nmax];
char sol[Nmax][Nmax];

int main()
{
	int n, m, h;
	//freopen ("fis.in", "r", stdin);
	//freopen ("fis.out", "w", stdout);
	scanf ("%d %d %d\n", &n, &m, &h);
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			scanf ("%c", &a[i][j]);
			sol[i][j] = '.';
		}
		scanf ("%*c");
	}
	for (int i = 0; i < h; i++) {
		for (int j = 0; j < m; j++) {
			char c;
			scanf ("%c", &c);
			if (c == '#') xorin[j] ++;
		}
		scanf ("%*c");
	}
	for (int i = 0; i < h; i++) {
		for (int j = 0; j < n; j++)
		{
			char c;
			scanf ("%c", &c);
			if (c == '#') xorana[j] ++;
		}
		scanf ("%*c");
	}
	//xorin
	for (int i = 0; i < m; i++) {
		if (xorin[i] != 0)
		{
			for (int j = n - 1; j >=0; j--) {
				if (a[j][i] == '#')
					sol[j][i] = xorin[i];
			}
		}
	}
	reverse (xorana, xorana +n);
	//xorana
	for (int i = 0; i < n; i++) {
		if (xorana[i] != 0)
		{
			for (int j = m - 1; j >= 0; j--)
				if (a[i][j] == '#' && (sol[i][j] > xorana[i])) {
					sol[i][j] = xorana[i];
				}
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (sol[i][j] != '.') printf ("%d", sol[i][j]);
			else printf ("%c", sol[i][j]);
		}
		printf ("\n");
	}
	return 0;
}