#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m, sum;
cin >> n >> m;
// 行留出来首行和尾行,列留出来首列和尾列
// 多余的两行两列放'.'方便后续计算邻域的大雷
vector<vector<char>> arr(n+2, vector<char>(m+2, '.'));
// 接收数据
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin>>arr[i][j];
}
}
// 开始扫雷
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
if(arr[i][j] == '*') cout << '*'; // 发现地雷,输出*
else
{
// 未发现地雷,计算雷数
sum = 0;
if(arr[i-1][j-1] == '*') sum++; // 左上
if(arr[i-1][j] == '*') sum++; // 上
if(arr[i-1][j+1] == '*') sum++; // 右上
if(arr[i][j-1] == '*') sum++; // 左
if(arr[i][j+1] == '*') sum++; // 右
if(arr[i+1][j-1] == '*') sum++; // 左下
if(arr[i+1][j] == '*') sum++; // 下
if(arr[i+1][j+1] == '*') sum++; // 右下
cout << sum; // 输出雷数
};
}
cout << endl;
}
}
// 64 位输出请用 printf("%lld")