#include<bits/stdc++.h>
using namespace std;
const int MAX = 1020;
char mp[MAX][MAX];
int ans[MAX][MAX];
int dx[] = {-1, -1, -1, 0, 0, 1, 1, 1};
int dy[] = {-1, 0, 1, -1, 1, -1, 0, 1};
void find(int x, int y, int n, int m);
int main() {
int n, m;cin >> n >> m;
memset(ans, 0, sizeof(ans));
cin.ignore();
for (int i = 0; i < n; ++i) {
string line;
getline(cin, line);// 过滤空格,提取有效字符
int idx = 0;
for (char c : line) {
if (c != ' ') mp[i][idx++] = c;
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (mp[i][j] == '*') find(i, j, n, m);
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (mp[i][j] == '*') cout << '*';
else cout << ans[i][j];
}
cout << endl;
}
return 0;
}
void find(int x, int y, int n, int m) {
for (int i = 0; i < 8; ++i) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx >= 0 && nx < n && ny >= 0 && ny < m) {
ans[nx][ny]++;
}
}
}