#include <bits/stdc++.h>
using namespace std;
set<pair<int, int> > st;
char a[1111][1111], used[1111][1111];
int dp[1111][1111], us[1111][1111], k, color[1111][1111], col;
vector<pair<int, int> > v;
void dfs(int x, int y) {
  v.push_back({x, y});
  us[x][y] = 1;
  k++;
  if (a[x][y + 1] == '.' && us[x][y + 1] == 0) {
    dfs(x, y + 1);
  }
  if (a[x][y - 1] == '.' && us[x][y - 1] == 0) {
    dfs(x, y - 1);
  }
  if (a[x + 1][y] == '.' && us[x + 1][y] == 0) {
    dfs(x + 1, y);
  }
  if (a[x - 1][y] == '.' && us[x - 1][y] == 0) {
    dfs(x - 1, y);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cin >> a[i][j];
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (a[i][j] == '.' && us[i][j] == 0) {
        col++;
        k = 0;
        dfs(i, j);
        for (int x = 0; x < v.size(); x++) {
          dp[v[x].first][v[x].second] = k;
          color[v[x].first][v[x].second] = col;
        }
        v.clear();
      }
    }
  }
  for (int x = 1; x <= n; x++) {
    for (int y = 1; y <= m; y++) {
      if (a[x][y] == '*') {
        int ans = 0;
        st.insert({color[x + 1][y], dp[x + 1][y]});
        st.insert({color[x - 1][y], dp[x - 1][y]});
        st.insert({color[x][y + 1], dp[x][y + 1]});
        st.insert({color[x][y - 1], dp[x][y - 1]});
        while (st.size() > 0) {
          ans += st.begin()->second;
          st.erase(st.begin());
        }
        cout << (ans + 1) % 10;
        ans = 0;
      } else
        cout << a[x][y];
    }
    cout << '\n';
  }
}
