RT
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 155;
int mp[MAXN][MAXN], cnt = 0, sum, n, m;
bool mpf[MAXN][MAXN];
void dfs(int x, int y) {
mpf[x][y] = 1, cnt++;
if (x != 1) {
if (y != 1) {
if (mp[x - 1][y - 1] != -1 && !mpf[x - 1][y - 1])
dfs(x - 1, y - 1);
else if (mp[x - 1][y - 1] == -1)
mp[x][y]++;
}
if (y != n) {
if (mp[x - 1][y + 1] != -1 && !mpf[x - 1][y + 1])
dfs(x - 1, y + 1);
else if (mp[x - 1][y + 1] == -1)
mp[x][y]++;
}
if (mp[x - 1][y] != -1 && !mpf[x - 1][y])
dfs(x - 1, y);
else if (mp[x - 1][y] == -1)
mp[x][y]++;
}
if (x != m) {
if (y != 1) {
if (mp[x + 1][y - 1] != -1 && !mpf[x + 1][y - 1])
dfs(x + 1, y - 1);
else if (mp[x + 1][y - 1] == -1)
mp[x][y]++;
}
if (y != n) {
if (mp[x + 1][y + 1] != -1 && !mpf[x + 1][y + 1])
dfs(x + 1, y + 1);
else if (mp[x + 1][y + 1] == -1)
mp[x][y]++;
}
if (mp[x + 1][y] != -1 && !mpf[x + 1][y])
dfs(x + 1, y);
else if (mp[x + 1][y] == -1)
mp[x][y]++;
}
if (y != 1) {
if (mp[x][y - 1] != -1 && !mpf[x][y - 1])
dfs(x, y - 1);
else if (mp[x][y - 1] == -1)
mp[x][y]++;
}
if (y != n) {
if (mp[x][y + 1] != -1 && !mpf[x][y + 1])
dfs(x, y + 1);
else if (mp[x][y + 1] == -1)
mp[x][y]++;
}
}
signed main() {
int mines = 0;
char c;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> c;
if (c == '*')
mp[i][j] = -1, mines++;
}
}
sum = n * m - mines;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (mp[i][j] == 0) {
if (!mpf[i][j])
dfs(i, j);
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (mp[i][j] == -1)
cout << '*';
else
cout << mp[i][j];
}
cout << '\n';
}
return 0;
}
救救孩子!