#include <stdio.h>#include <string.h>char calculate(int r, int l);char map[10][10];int n;int main(){ int i, j, m, count; char touch[10][10]; char str[11]; char res[10][10]; count = 0; while(scanf("%d", &n) != EOF) { if(count) { printf("n"); } else { count = 1; } for(i = 0; i < n; i++) { scanf("%s", str); for(j = 0; j < n; j++) {map[i][j] = str[j]; } } for(i = 0; i < n; i++) { scanf("%s", str); for(j = 0; j < n; j++) {touch[i][j] = str[j];res[i][j] = '.'; } } m = 0; for(i = 0; i < n; i++) { for(j = 0; j < n; j++) {if(touch[i][j] == 'x') { if(map[i][j] == '*') { m = 1; } else { res[i][j] = calculate(i, j); }} } } if(m) { for(i = 0; i < n; i++) {for(j = 0; j < n; j++) { if(map[i][j] == '*') { res[i][j] = '*'; }} } } for(i = 0; i < n; i++) { for(j = 0; j < n; j++) {printf("%c", res[i][j]); } printf("n"); } } return 0;}char calculate(int r, int l){ char count = '0'; if(r-1 >= 0 && map[r-1][l] == '*') { count++; } if(r-1 >= 0 && l-1 >= 0 && map[r-1][l-1] == '*') { count++; } if(l-1 >= 0 && map[r][l-1] == '*') { count++; } if(r+1 < n && l-1 >= 0 && map[r+1][l-1] == '*') { count++; } if(r+1 < n && map[r+1][l] == '*') { count++; } if(r+1 < n && l+1 < n && map[r+1][l+1] == '*') { count++; } if(l+1 < n && map[r][l+1] == '*') { count++; } if(r-1 >= 0 && l+1 < n && map[r-1][l+1] == '*') { count++; } return count;}