#include<iostream>
#include<vector>
using namespace std;
int dx[] = { -1,-1,-1,0,0,1,1,1 };
int dy[] = { -1,1,0,1,-1,-1,1,0 };
vector<vector<char>>search(vector<vector<char>>& map) {
int rows = map.size();
int cols = map[0].size();
vector<vector<char>>result(rows, vector<char>(cols,'0'));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (map[i][j] == '*') {
result[i][j] = '*';
}
else {
for (int k = 0; k < 8; k++) {
int newRow = i + dx[k];
int newCol = j + dy[k];
if (newRow >= 0 && newRow < rows && newCol >= 0 && newCol < cols) {
if (map[newRow][newCol] == '*') {
result[i][j]++;
}
}
}
}
}
}
return result;
}
int main() {
int n, m; cin >> n >> m;
vector<vector<char>>map(n, vector<char>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> map[i][j];
}
}
vector<vector<char>>ans = search(map);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << ans[i][j];
}
cout << endl;
}
}