#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]++;
        }
    }
}