#include<stdio.h>

int main()
{
	int n = 0, m = 0;
	char input = 0;
  //将是否有雷存在一个矩阵里,转化为0和1,方便运算
	int arr1[1001][1001] = { 0 };//为了防止后面的算法越界,在题目要求数组外再加一层全为0的元素
  //最后运算结果用另一个矩阵表示
	char arr2[1001][1001] = { '0' };
	scanf("%d %d\n", &n, &m);
  //输入数组,转化为0,1
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			scanf("%c ", &input);
			if (input == '*')
				arr1[i][j] = 1;
		}
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			if (arr1[i][j] == 0)
			{
			  //寻找雷,将周围的1和0加起来就是雷的个数,并赋给arr2
				arr2[i][j] = (arr1[i - 1][j] + arr1[i - 1][j - 1]
					+ arr1[i][j - 1] + arr1[i + 1][j - 1]
					+ arr1[i + 1][j] + arr1[i + 1][j + 1]
					+ arr1[i][j + 1] + arr1[i - 1][j + 1] + '0');
			}
			else
				arr2[i][j] = '*';
		}
	}
  //打印arr2
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			printf("%c", arr2[i][j]);
		}
		printf("\n");
	}
	return 0;
}