#!/usr/bin/env python

# -*- coding: utf-8 -*-



H, W = map(int, input().split())

# 2次元配列を作る

grid = []

for _n in range(H):

    grid.append(list(input()))





def is_bomb(h, w):

    """指定されたマスが爆弾か調べる"""

    try:

        # マイナス位置は全部0扱い

        if h < 0 or w < 0:

            return 0

        if grid[h][w] == "#":

            return 1

        else:

            return 0

    except IndexError:

        return 0





def search_bomb(h, w):

    """指定されたマスの周囲8マスが爆弾か調べて爆弾の数を返す"""

    if grid[h][w] == "#":

        return "#"

    bomb_count = sum(

        [

            is_bomb(h - 1, w - 1),

            is_bomb(h - 1, w),

            is_bomb(h - 1, w + 1),

            is_bomb(h, w - 1),

            is_bomb(h, w + 1),

            is_bomb(h + 1, w - 1),

            is_bomb(h + 1, w),

            is_bomb(h + 1, w + 1),

        ]

    )

    from logging import getLogger, DEBUG, basicConfig



    logger = getLogger(__name__)

    logger.setLevel(DEBUG)

    basicConfig()

    logger.info(bomb_count)

    return str(bomb_count)





# 置換後の2次元配列作成

for h in range(H):

    for w in range(W):

        print(search_bomb(h, w), end="")

    # 行が終わったら改行

    print()

#!/usr/bin/env python

# -*- coding: utf-8 -*-



H, W = map(int, input().split())

# 2次元配列を作る

grid = []

for _n in range(H):

    grid.append(list(input()))





def is_bomb(h, w):

    """指定されたマスが爆弾か調べる"""

    try:

        # マイナス位置は全部0扱い

        if h < 0 or w < 0:

            return 0

        if grid[h][w] == "#":

            return 1

        else:

            return 0

    except IndexError:

        return 0





def search_bomb(h, w):

    """指定されたマスの周囲8マスが爆弾か調べて爆弾の数を返す"""

    if grid[h][w] == "#":

        return "#"

    bomb_count = sum(

        [

            is_bomb(h - 1, w - 1),

            is_bomb(h - 1, w),

            is_bomb(h - 1, w + 1),

            is_bomb(h, w - 1),

            is_bomb(h, w + 1),

            is_bomb(h + 1, w - 1),

            is_bomb(h + 1, w),

            is_bomb(h + 1, w + 1),

        ]

    )

    return str(bomb_count)





# 置換後の2次元配列作成

for h in range(H):

    for w in range(W):

        print(search_bomb(h, w), end="")

    # 行が終わったら改行

    print()

#!/usr/bin/env python
# -*- coding: utf-8 -*-
H, W = map(int, input().split())
# 2次元配列を作る
grid = []
for _n in range(H):
    grid.append(list(input()))


def is_bomb(h, w):
    """指定されたマスが爆弾か調べる"""
    try:
        # マイナス位置は全部0扱い
        if h < 0 or w < 0:
            return 0
        if grid[h][w] == "#":
            return 1
        else:
            return 0
    except IndexError:
        return 0


def search_bomb(h, w):
    """指定されたマスの周囲8マスが爆弾か調べて爆弾の数を返す"""
    if grid[h][w] == "#":
        return "#"
    bomb_count = sum(
        [
            is_bomb(h - 1, w - 1),
            is_bomb(h - 1, w),
            is_bomb(h - 1, w + 1),
            is_bomb(h, w - 1),
            is_bomb(h, w + 1),
            is_bomb(h + 1, w - 1),
            is_bomb(h + 1, w),
            is_bomb(h + 1, w + 1),
        ]
    )
    from logging import getLogger, DEBUG, basicConfig

    logger = getLogger(__name__)
    logger.setLevel(DEBUG)
    basicConfig()
    logger.info(bomb_count)
    return str(bomb_count)


# 置換後の2次元配列作成
for h in range(H):
    for w in range(W):
        print(search_bomb(h, w), end="")
    # 行が終わったら改行
    print()

#!/usr/bin/env python
# -*- coding: utf-8 -*-
H, W = map(int, input().split())
# 2次元配列を作る
grid = []
for _n in range(H):
    grid.append(list(input()))


def is_bomb(h, w):
    """指定されたマスが爆弾か調べる"""
    try:
        # マイナス位置は全部0扱い
        if h < 0 or w < 0:
            return 0
        if grid[h][w] == "#":
            return 1
        else:
            return 0
    except IndexError:
        return 0


def search_bomb(h, w):
    """指定されたマスの周囲8マスが爆弾か調べて爆弾の数を返す"""
    if grid[h][w] == "#":
        return "#"
    bomb_count = sum(
        [
            is_bomb(h - 1, w - 1),
            is_bomb(h - 1, w),
            is_bomb(h - 1, w + 1),
            is_bomb(h, w - 1),
            is_bomb(h, w + 1),
            is_bomb(h + 1, w - 1),
            is_bomb(h + 1, w),
            is_bomb(h + 1, w + 1),
        ]
    )
    return str(bomb_count)


# 置換後の2次元配列作成
for h in range(H):
    for w in range(W):
        print(search_bomb(h, w), end="")
    # 行が終わったら改行
    print()

-    from logging import getLogger, DEBUG, basicConfig - -    logger = getLogger(__name__) -    logger.setLevel(DEBUG) -    basicConfig() -    logger.info(bomb_count)