# 7.1 Minesweeper field
# Поле для игры сапёр представляет собой сетку размером n×m. В ячейке сетки может
# находиться или отсутствовать мина.
# Напишите программу, которая выводит "решённое" поле, т.е. для каждой ячейки,
# не являющейся миной, указывается число мин, находящихся в соседних ячейках
# (учитывая диагональные направления)
# Формат ввода:
# На первой строке указываются два натуральных числа 1≤n,m≤100, после чего в
# n строках содержится описание поля в виде последовательности точек '.' и звёздочек
# '*', где точка означает пустую ячейку, а звёздочка − ячейку с миной.
# Формат вывода:
# n строк поля, в каждой ячейке которого будет либо число от 0 до 8, либо мина
# (обозначенная символом "*"), при этом число означает количество мин в соседних
# ячейках поля.
# input col, row from console
n, m = (int(_) for _ in input().split())
field = [[0 for j in range(m)] for i in range(n)]
# input fields string
for i in range(n):
    row = input()
    for j in range(m):
        if row[j] == "*":
            field[i][j] = "*"
# +1 to each ceil near mine
for i in range(n):
    for j in range(m):
        if field[i][j] == "*":
            for ki in range(i - 1, i + 2):
                for kj in range(j - 1, j + 2):
                    if 0 <= ki < n and 0 <= kj < m and field[ki][kj] != "*":
                        field[ki][kj] += 1
# output matrix
for i in range(n):
    for j in range(m):
        print(field[i][j], end='')
    print()
