#include <iostream>
using namespace std;
const int MAX = 105;
char grid[MAX][MAX];
int result[MAX][MAX];
int dx[] = {-1, 1, 0, 0, -1, -1, 1, 1};
int dy[] = {0, 0, -1, 1, -1, 1, -1, 1};
int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            cin >> grid[i][j];
        }
    }
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            if (grid[i][j] == '*') {
                result[i][j] = -1;
                continue;
            }
            int count = 0;
            for (int k = 0; k < 8; ++k) {
                int ni = i + dx[k];
                int nj = j + dy[k];
                if (ni >= 0 && ni < n && nj >= 0 && nj < m && grid[ni][nj] == '*') {
                    count++;
                }
            }
            result[i][j] = count;
        }
    }
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            if (result[i][j] == -1) {
                cout << '*';
            } else {
                cout << result[i][j];
            }
        }
        cout << endl;
    }
    return 0;
}
/**************************************************************
	Problem: 2341
	User: addmmiinn
	Language: C++
	Result: Accepted
	Time:75 ms
	Memory:2128 kb
****************************************************************/