#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using PAIR = pair<int, int>;
using PAIRLL = pair<ll, ll>;
using vi = vector<int>;
using vvi = vector<vi>;
ll GCD(ll x, ll y) {
  if (y == 0)
    return x;
  else
    return GCD(y, x % y);
}
ll LCM(ll x, ll y) { return x / GCD(x, y) * y; }
bool my_compare(pair<string, int> a, pair<string, int> b) {
  if (a.first != b.first) {
    return a.first < b.first;
  }
  if (a.second != b.second) {
    return a.second > b.second;
  } else {
    return true;
  }
}
int main() {
  int H, W;
  cin >> H >> W;
  vector<string> S(H);
  for (int i = 0; i < (int)H; ++i) cin >> S[i];
  vector<vector<char> > A(H, vector<char>(W));
  vector<vector<string> > B(H, vector<string>(W));
  for (int i = 0; i < (int)H; ++i) {
    for (int j = 0; j < (int)W; ++j) A[i][j] = S[i][j];
  }
  for (int i = 0; i < (int)H; ++i) {
    for (int j = 0; j < (int)W; ++j) {
      B[i][j] = A[i][j];
    }
  }
  int x;
  if (H == 1 && W == 1) {
    if (A[0][0] == '.') {
      B[0][0] = '0';
    }
    if (A[0][0] == '#') {
      B[0][0] = '#';
    }
    cout << B[0][0] << endl;
  } else if (H == 1 && W == 2) {
    if (A[0][0] == '.' && A[0][1] == '.') {
      B[0][0] = '0';
      B[0][1] = '0';
    }
    if (A[0][0] == '#' && A[0][1] == '.') {
      B[0][0] = '#';
      B[0][1] = '1';
    }
    if (A[0][0] == '.' && A[0][1] == '#') {
      B[0][0] = '1';
      B[0][1] = '#';
    }
    if (A[0][0] == '#' && A[0][1] == '#') {
      B[0][0] = '#';
      B[0][1] = '#';
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  } else if (H == 2 && W == 1) {
    if (A[0][0] == '.' && A[1][0] == '.') {
      B[0][0] = '0';
      B[1][0] = '0';
    }
    if (A[0][0] == '#' && A[1][0] == '.') {
      B[0][0] = '#';
      B[1][0] = '1';
    }
    if (A[0][0] == '.' && A[1][0] == '#') {
      B[0][0] = '1';
      B[1][0] = '#';
    }
    if (A[0][0] == '#' && A[1][0] == '#') {
      B[0][0] = '#';
      B[1][0] = '#';
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  } else if (H == 2 && W == 2) {
    if (A[0][0] == '.') {
      x = 0;
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[1][1] == '#') {
        ++x;
      }
      if (A[1][0] == '#') {
        ++x;
      }
      B[0][0] = to_string(x);
    }
    if (A[0][W - 1] == '.') {
      x = 0;
      if (A[0][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 1] == '#') {
        ++x;
      }
      B[0][W - 1] = to_string(x);
    }
    if (A[H - 1][0] == '.') {
      x = 0;
      if (A[H - 2][0] == '#') {
        ++x;
      }
      if (A[H - 2][1] == '#') {
        ++x;
      }
      if (A[H - 1][1] == '#') {
        ++x;
      }
      B[H - 1][0] = to_string(x);
    }
    if (A[H - 1][W - 1] == '.') {
      x = 0;
      if (A[H - 2][W - 1] == '#') {
        ++x;
      }
      if (A[H - 2][W - 2] == '#') {
        ++x;
      }
      if (A[H - 1][W - 2] == '#') {
        ++x;
      }
      B[H - 1][W - 1] = to_string(x);
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  } else if (H == 1 && W == 3) {
    if (A[0][0] == '.' && A[0][1] == '.' && A[0][2] == '.') {
      B[0][0] = '0';
      B[0][1] = '0';
      B[0][2] = '0';
    }
    if (A[0][0] == '.' && A[0][1] == '.' && A[0][2] == '#') {
      B[0][0] = '0';
      B[0][1] = '1';
      B[0][2] = '#';
    }
    if (A[0][0] == '.' && A[0][1] == '#' && A[0][2] == '.') {
      B[0][0] = '1';
      B[0][1] = '#';
      B[0][2] = '1';
    }
    if (A[0][0] == '.' && A[0][1] == '#' && A[0][2] == '#') {
      B[0][0] = '1';
      B[0][1] = '#';
      B[0][2] = '#';
    }
    if (A[0][0] == '#' && A[0][1] == '.' && A[0][2] == '.') {
      B[0][0] = '#';
      B[0][1] = '1';
      B[0][2] = '0';
    }
    if (A[0][0] == '#' && A[0][1] == '.' && A[0][2] == '#') {
      B[0][0] = '#';
      B[0][1] = '2';
      B[0][2] = '#';
    }
    if (A[0][0] == '#' && A[0][1] == '#' && A[0][2] == '.') {
      B[0][0] = '#';
      B[0][1] = '#';
      B[0][2] = '1';
    }
    if (A[0][0] == '#' && A[0][1] == '#' && A[0][2] == '#') {
      B[0][0] = '#';
      B[0][1] = '#';
      B[0][2] = '#';
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  } else if (H == 3 && W == 1) {
    if (A[0][0] == '.' && A[1][0] == '.' && A[2][0] == '.') {
      B[0][0] = '0';
      B[1][0] = '0';
      B[2][0] = '0';
    }
    if (A[0][0] == '.' && A[1][0] == '.' && A[2][0] == '#') {
      B[0][0] = '0';
      B[1][0] = '1';
      B[2][0] = '#';
    }
    if (A[0][0] == '.' && A[1][0] == '#' && A[2][0] == '.') {
      B[0][0] = '1';
      B[1][0] = '#';
      B[2][0] = '1';
    }
    if (A[0][0] == '.' && A[1][0] == '#' && A[2][0] == '#') {
      B[0][0] = '1';
      B[1][0] = '#';
      B[2][0] = '#';
    }
    if (A[0][0] == '#' && A[1][0] == '.' && A[2][0] == '.') {
      B[0][0] = '#';
      B[1][0] = '1';
      B[2][0] = '0';
    }
    if (A[0][0] == '#' && A[1][0] == '.' && A[2][0] == '#') {
      B[0][0] = '#';
      B[1][0] = '2';
      B[2][0] = '#';
    }
    if (A[0][0] == '#' && A[1][0] == '#' && A[2][0] == '.') {
      B[0][0] = '#';
      B[1][0] = '#';
      B[2][0] = '1';
    }
    if (A[0][0] == '#' && A[1][0] == '#' && A[2][0] == '#') {
      B[0][0] = '#';
      B[1][0] = '#';
      B[2][0] = '#';
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  } else if (H == 3 && W == 2) {
    if (A[0][0] == '.') {
      x = 0;
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[1][1] == '#') {
        ++x;
      }
      if (A[1][0] == '#') {
        ++x;
      }
      B[0][0] = to_string(x);
    }
    if (A[0][W - 1] == '.') {
      x = 0;
      if (A[0][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 1] == '#') {
        ++x;
      }
      B[0][W - 1] = to_string(x);
    }
    if (A[H - 1][0] == '.') {
      x = 0;
      if (A[H - 2][0] == '#') {
        ++x;
      }
      if (A[H - 2][1] == '#') {
        ++x;
      }
      if (A[H - 1][1] == '#') {
        ++x;
      }
      B[H - 1][0] = to_string(x);
    }
    if (A[H - 1][W - 1] == '.') {
      x = 0;
      if (A[H - 2][W - 1] == '#') {
        ++x;
      }
      if (A[H - 2][W - 2] == '#') {
        ++x;
      }
      if (A[H - 1][W - 2] == '#') {
        ++x;
      }
      B[H - 1][W - 1] = to_string(x);
    }
    x = 0;
    if (A[1][0] == '.') {
      if (A[0][0] == '#') {
        ++x;
      }
      if (A[2][0] == '#') {
        ++x;
      }
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[1][1] == '#') {
        ++x;
      }
      if (A[2][1] == '#') {
        ++x;
      }
      B[1][0] = to_string(x);
    }
    x = 0;
    if (A[1][1] == '.') {
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[2][1] == '#') {
        ++x;
      }
      if (A[0][0] == '#') {
        ++x;
      }
      if (A[1][0] == '#') {
        ++x;
      }
      if (A[2][0] == '#') {
        ++x;
      }
      B[1][1] = to_string(x);
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  } else if (H == 2 && W == 3) {
    if (A[0][0] == '.') {
      x = 0;
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[1][1] == '#') {
        ++x;
      }
      if (A[1][0] == '#') {
        ++x;
      }
      B[0][0] = to_string(x);
    }
    if (A[0][W - 1] == '.') {
      x = 0;
      if (A[0][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 1] == '#') {
        ++x;
      }
      B[0][W - 1] = to_string(x);
    }
    if (A[H - 1][0] == '.') {
      x = 0;
      if (A[H - 2][0] == '#') {
        ++x;
      }
      if (A[H - 2][1] == '#') {
        ++x;
      }
      if (A[H - 1][1] == '#') {
        ++x;
      }
      B[H - 1][0] = to_string(x);
    }
    if (A[H - 1][W - 1] == '.') {
      x = 0;
      if (A[H - 2][W - 1] == '#') {
        ++x;
      }
      if (A[H - 2][W - 2] == '#') {
        ++x;
      }
      if (A[H - 1][W - 2] == '#') {
        ++x;
      }
      B[H - 1][W - 1] = to_string(x);
    }
    x = 0;
    if (A[0][1] == '.') {
      if (A[0][0] == '#') {
        ++x;
      }
      if (A[0][2] == '#') {
        ++x;
      }
      if (A[1][0] == '#') {
        ++x;
      }
      if (A[1][1] == '#') {
        ++x;
      }
      if (A[1][2] == '#') {
        ++x;
      }
      B[0][1] = to_string(x);
    }
    x = 0;
    if (A[1][1] == '.') {
      if (A[1][0] == '#') {
        ++x;
      }
      if (A[1][2] == '#') {
        ++x;
      }
      if (A[0][0] == '#') {
        ++x;
      }
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[0][2] == '#') {
        ++x;
      }
      B[1][1] = to_string(x);
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  } else if (H == 3 && W == 2) {
    if (A[0][0] == '.') {
      x = 0;
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[1][1] == '#') {
        ++x;
      }
      if (A[1][0] == '#') {
        ++x;
      }
      B[0][0] = to_string(x);
    }
    if (A[0][W - 1] == '.') {
      x = 0;
      if (A[0][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 1] == '#') {
        ++x;
      }
      B[0][W - 1] = to_string(x);
    }
    if (A[H - 1][0] == '.') {
      x = 0;
      if (A[H - 2][0] == '#') {
        ++x;
      }
      if (A[H - 2][1] == '#') {
        ++x;
      }
      if (A[H - 1][1] == '#') {
        ++x;
      }
      B[H - 1][0] = to_string(x);
    }
    if (A[H - 1][W - 1] == '.') {
      x = 0;
      if (A[H - 2][W - 1] == '#') {
        ++x;
      }
      if (A[H - 2][W - 2] == '#') {
        ++x;
      }
      if (A[H - 1][W - 2] == '#') {
        ++x;
      }
      B[H - 1][W - 1] = to_string(x);
    }
    x = 0;
    if (A[1][0] == '.') {
      if (A[0][0] == '#') {
        ++x;
      }
      if (A[2][0] == '#') {
        ++x;
      }
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[1][1] == '#') {
        ++x;
      }
      if (A[2][1] == '#') {
        ++x;
      }
      B[1][0] = to_string(x);
    }
    x = 0;
    if (A[1][1] == '.') {
      if (A[1][0] == '#') {
        ++x;
      }
      if (A[1][2] == '#') {
        ++x;
      }
      if (A[0][0] == '#') {
        ++x;
      }
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[0][2] == '#') {
        ++x;
      }
      B[1][1] = to_string(x);
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  } else {
    if (A[0][0] == '.') {
      x = 0;
      if (A[0][1] == '#') {
        ++x;
      }
      if (A[1][1] == '#') {
        ++x;
      }
      if (A[1][0] == '#') {
        ++x;
      }
      B[0][0] = to_string(x);
    }
    if (A[0][W - 1] == '.') {
      x = 0;
      if (A[0][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 2] == '#') {
        ++x;
      }
      if (A[1][W - 1] == '#') {
        ++x;
      }
      B[0][W - 1] = to_string(x);
    }
    if (A[H - 1][0] == '.') {
      x = 0;
      if (A[H - 2][0] == '#') {
        ++x;
      }
      if (A[H - 2][1] == '#') {
        ++x;
      }
      if (A[H - 1][1] == '#') {
        ++x;
      }
      B[H - 1][0] = to_string(x);
    }
    if (A[H - 1][W - 1] == '.') {
      x = 0;
      if (A[H - 2][W - 1] == '#') {
        ++x;
      }
      if (A[H - 2][W - 2] == '#') {
        ++x;
      }
      if (A[H - 1][W - 2] == '#') {
        ++x;
      }
      B[H - 1][W - 1] = to_string(x);
    }
    for (int i = 1; i < W - 1; ++i) {
      x = 0;
      if (A[0][i] == '.') {
        if (A[0][i - 1] == '#') {
          ++x;
        }
        if (A[0][i + 1] == '#') {
          ++x;
        }
        if (A[1][i - 1] == '#') {
          ++x;
        }
        if (A[1][i] == '#') {
          ++x;
        }
        if (A[1][i + 1] == '#') {
          ++x;
        }
        B[0][i] = to_string(x);
      }
    }
    for (int i = 1; i < W - 1; ++i) {
      x = 0;
      if (A[H - 1][i] == '.') {
        if (A[H - 1][i - 1] == '#') {
          ++x;
        }
        if (A[H - 1][i + 1] == '#') {
          ++x;
        }
        if (A[H - 2][i - 1] == '#') {
          ++x;
        }
        if (A[H - 2][i] == '#') {
          ++x;
        }
        if (A[H - 2][i + 1] == '#') {
          ++x;
        }
        B[H - 1][i] = to_string(x);
      }
    }
    for (int i = 1; i < H - 1; ++i) {
      x = 0;
      if (A[i][0] == '.') {
        if (A[i - 1][0] == '#') {
          ++x;
        }
        if (A[i + 1][0] == '#') {
          ++x;
        }
        if (A[i - 1][1] == '#') {
          ++x;
        }
        if (A[i][1] == '#') {
          ++x;
        }
        if (A[i + 1][1] == '#') {
          ++x;
        }
        B[i][0] = to_string(x);
      }
    }
    for (int i = 1; i < H - 1; ++i) {
      x = 0;
      if (A[i][W - 1] == '.') {
        if (A[i - 1][W - 1] == '#') {
          ++x;
        }
        if (A[i + 1][W - 1] == '#') {
          ++x;
        }
        if (A[i - 1][W - 2] == '#') {
          ++x;
        }
        if (A[i][W - 2] == '#') {
          ++x;
        }
        if (A[i + 1][W - 2] == '#') {
          ++x;
        }
        B[i][W - 1] = to_string(x);
      }
    }
    for (int i = 1; i < H - 1; ++i) {
      for (int j = 1; j < W - 1; ++j) {
        x = 0;
        if (A[i][j] == '.') {
          if (A[i - 1][j - 1] == '#') {
            ++x;
          }
          if (A[i - 1][j + 1] == '#') {
            ++x;
          }
          if (A[i + 1][j - 1] == '#') {
            ++x;
          }
          if (A[i + 1][j + 1] == '#') {
            ++x;
          }
          if (A[i][j - 1] == '#') {
            ++x;
          }
          if (A[i][j + 1] == '#') {
            ++x;
          }
          if (A[i - 1][j] == '#') {
            ++x;
          }
          if (A[i + 1][j] == '#') {
            ++x;
          }
          B[i][j] = to_string(x);
        }
      }
    }
    for (int i = 0; i < (int)H; ++i) {
      for (int j = 0; j < (int)W; ++j) {
        cout << B[i][j];
      }
      cout << endl;
    }
  }
}
