n, m = map(int, input().split())
# 将输入内容转换为0或者1表示的点阵,以方便计数
# 并在点阵周围增加一圈以0为元素的点阵,以减少原点阵四周计算的逻辑判断
add_list = [[0] * (m + 2)]  # 将输入转为列表
for i in range(n):
    num_list = [0]
    for j in input():
        if j == ".":
            num_list.append(0)
        elif j == "*":
            num_list.append(1)
    num_list.append(0)
    add_list.append(num_list)
add_list.append([0] * (m + 2))
# 将点阵除四周的内容转换后输出
for row in range(1, n + 2 - 1):  # 点阵在在原有基础上增加了两行和两列,计算内容从1到N-1
    for column in range(1, m + 2 - 1):
        if add_list[row][column] == 1:
            print("*", end="")
        else:
            count = (
                add_list[row - 1][column - 1]
                + add_list[row - 1][column]
                + add_list[row - 1][column + 1]
                + add_list[row][column - 1]
                + add_list[row][column + 1]
                + add_list[row + 1][column - 1]
                + add_list[row + 1][column]
                + add_list[row + 1][column + 1]
            )
            print(count, end="")
    print()