#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
  int H, W;
  cin >> H >> W;
  vector<string> S(H);
  for (auto & s : S)
    cin >> s;
  int h1 = 0;
  {
    int w1 = 0;
    {
      if ('#' == S[h1][w1])
        cout << '#';
      else
      {
        int cnt = 0;
        if (1 < W)
          cnt += (('#' == S[h1][w1 + 1]) ? 1 : 0);
        if (1 < H)
        {
          cnt += (('#' == S[h1 + 1][w1]) ? 1 : 0);
          if (1 < W)
            cnt += (('#' == S[h1 + 1][w1 + 1]) ? 1 : 0);
        }
        cout << cnt;
      }
    }    
    for (w1 = 1; w1 < W - 1; ++w1)
    {
      if ('#' == S[h1][w1])
      {
        cout << '#';
        continue;
      }
      int cnt = 0;
      cnt += (('#' == S[h1][w1 - 1]) ? 1 : 0);
      cnt += (('#' == S[h1][w1 + 1]) ? 1 : 0);
      if (1 < H)
        for (int w2 = w1 - 1; w2 <= w1 + 1; ++w2)
          cnt += (('#' == S[h1 + 1][w2]) ? 1 : 0);
      cout << cnt;
    }
    if (1 < W)
    {
      if ('#' == S[h1][w1])
        cout << '#';
      else
      {
        int cnt = 0;
        cnt += (('#' == S[h1][w1 - 1]) ? 1 : 0);
        if (1 < H)
        {
          cnt += (('#' == S[h1 + 1][w1 - 1]) ? 1 : 0);
          cnt += (('#' == S[h1 + 1][w1]) ? 1 : 0);
        }
        cout << cnt;
      }
    }
    cout << endl;
  }
  for (h1 = 1; h1 < H - 1; ++h1)
  {
    int w1 = 0;
    {
      if ('#' == S[h1][w1])
        cout << '#';
      else
      {
        int cnt = 0;
        cnt += (('#' == S[h1 - 1][w1]) ? 1 : 0);
        cnt += (('#' == S[h1 + 1][w1]) ? 1 : 0);
        if (1 < W)
          for (int h2 = h1 - 1; h2 <= h1 + 1; ++h2)
            cnt += (('#' == S[h2][w1 + 1]) ? 1 : 0);
        cout << cnt;
      }
    }
    for (w1 = 1; w1 < W - 1; ++w1)
    {
      if ('#' == S[h1][w1])
      {
        cout << '#';
        continue;
      }
      int cnt = 0;
      for (int w2 = w1 - 1; w2 <= w1 + 1; ++w2)
      {
        cnt += (('#' == S[h1 - 1][w2]) ? 1 : 0);
        cnt += (('#' == S[h1 + 1][w2]) ? 1 : 0);
      }
      cnt += (('#' == S[h1][w1 - 1]) ? 1 : 0);
      cnt += (('#' == S[h1][w1 + 1]) ? 1 : 0);
      cout << cnt;
    }
    if (1 < W)
    {
      if ('#' == S[h1][w1])
        cout << '#';
      else
      {
        int cnt = 0;
        cnt += (('#' == S[h1 - 1][w1]) ? 1 : 0);
        cnt += (('#' == S[h1 + 1][w1]) ? 1 : 0);
        for (int h2 = h1 - 1; h2 <= h1 + 1; ++h2)
          cnt += (('#' == S[h2][w1 - 1]) ? 1 : 0);
        cout << cnt;
      }
    }
    cout << endl;
  }

  if (1 < H)
  {
    int w1 = 0;
    {
      if ('#' == S[h1][w1])
        cout << '#';
      else
      {
        int cnt = 0;
        cnt += (('#' == S[h1 - 1][w1]) ? 1 : 0);
        if (1 < W)
        {
          cnt += (('#' == S[h1 - 1][w1 + 1]) ? 1 : 0);
          cnt += (('#' == S[h1][w1 + 1]) ? 1 : 0);
        }
        cout << cnt;
      }
    }    
    for (w1 = 1; w1 < W - 1; ++w1)
    {
      if ('#' == S[h1][w1])
      {
        cout << '#';
        continue;
      }
      int cnt = 0;
      cnt += (('#' == S[h1][w1 - 1]) ? 1 : 0);
      cnt += (('#' == S[h1][w1 + 1]) ? 1 : 0);
      for (int w2 = w1 - 1; w2 <= w1 + 1; ++w2)
        cnt += (('#' == S[h1 - 1][w2]) ? 1 : 0);
      cout << cnt;
    }
    if (1 < W)
    {
      if ('#' == S[h1][w1])
        cout << '#';
      else
      {
        int cnt = 0;
        cnt += (('#' == S[h1 - 1][w1 - 1]) ? 1 : 0);
        cnt += (('#' == S[h1 - 1][w1]) ? 1 : 0);
        cnt += (('#' == S[h1][w1 - 1]) ? 1 : 0);
        cout << cnt;
      }
    }
    cout << endl;
  }  
  return 0;
}


Measured memory_bytes: 256