fun main(args: Array<String>) {
    val (h, w) = readLine()?.split(" ")?.map(String::toInt) ?: return
    val m = mutableListOf<CharArray>()
    repeat(h) {
        m.add(readLine()?.toCharArray() ?: return)
    }

    0.until(h).forEach { y ->
        0.until(w).forEach { x ->
            val p = m[y][x]
            var count = 0
            if (p == '.') {
                if (y - 1 >= 0) {
                    if (m[y - 1][x] == '#') {
                        count++
                    }
                    if (x - 1 >= 0) {
                        if (m[y - 1][x - 1] == '#') {
                            count++
                        }
                    }
                    if (x + 1 < w) {
                        if (m[y - 1][x + 1] == '#') {
                            count++
                        }
                    }
                }
                if (x - 1 >= 0) {
                    if (m[y][x - 1] == '#') {
                        count++
                    }
                }
                if (x + 1 < w) {
                    if (m[y][x + 1] == '#') {
                        count++
                    }
                }
                if (y + 1 < h) {
                    if (m[y + 1][x] == '#') {
                        count++
                    }
                    if (x - 1 >= 0) {
                        if (m[y + 1][x - 1] == '#') {
                            count++
                        }
                    }
                    if (x + 1 < w) {
                        if (m[y + 1][x + 1] == '#') {
                            count++
                        }
                    }
                }
                m[y][x] = count.toString().first()
            }
        }
    }
    println(m.joinToString("\n") { it.joinToString(separator = "") })
}
