#define _CRT_SECURE_NO_WARNINGS 1
#define NUM 1000
#include<stdio.h>
//思路:
//遍历 每个 不是雷 的位置的周围的位置
int main()
{
int n = 0;
int m = 0;
while (~scanf("%d %d", &n, &m))
{
getchar();//吸收换行符
char arr[NUM][NUM] = { 0 };
//向数组中输入元素
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
scanf("%c", &arr[i][j]);
}
getchar();//吸收换行符
}
//开始遍历数组
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
//如果某个位置上就是 雷 直接输出
if (arr[i][j] == '*')
{
printf("*");
}
//不是 雷再进行 遍历 ,查找
//定位到每一个位置
else
{
int cnt = 0;//计数器 统计 某个位置周围雷的数目
for (int a = i - 1; a <= i + 1; a++)//行的范围
{
for (int b = j - 1; b <= j + 1; b++)//列的范围
{
if (arr[a][b] == '*')
{
cnt++;
}
}
}
//统计完了 就输出
printf("%d", cnt);
}
}
printf("\n");//每一行 结束 之后就换行
}
}
return 0;
}
//总结:
//充分的使用 getchar ()来 吸收换行符,有点 费劲捏!