import { readFileSync } from 'fs'
const inputLine: string[] = readFileSync("/dev/stdin", "utf8").split('\n')

inputLine.forEach(l => {
  inputRows.push(l.trim())
})

let firstLine = inputRows.shift()
if (!firstLine) firstLine = '0 0'
const HEIGHT = parseInt(firstLine.split(' ')[0])
const WIDTH = parseInt(firstLine.split(' ')[1])

const inputTable: string[][] = []
for (let i = 0; i < inputRows.length; i++) {
  inputTable.push(inputRows[i].split(''))
}

const row: string[] = new Array(WIDTH)
const table: string[][] = new Array(HEIGHT)
// '0'埋め
row.fill('0')
for (let i = 0; i < table.length; i++ ) {
  table[i] = [...row]
}

for (let h = 0; h < HEIGHT; h++) {
  for (let w = 0; w < WIDTH; w++) {
    if (inputTable[h][w] === '#') {
      if (h === 0) {
        // 上端の場合
        if (w === 0) {
          // 左上端の場合
          table[h + 1][w] = (parseInt(table[h + 1][w]) + 1).toString()
          table[h][w + 1] = (parseInt(table[h][w + 1]) + 1).toString()
          table[h + 1][w + 1] = (parseInt(table[h + 1][w + 1]) + 1).toString()
        } else if (w + 1 === WIDTH) {
          // 右上端の場合
          table[h + 1][w] = (parseInt(table[h + 1][w]) + 1).toString()
          table[h][w - 1] = (parseInt(table[h][w - 1]) + 1).toString()
          table[h + 1][w - 1] = (parseInt(table[h + 1][w - 1]) + 1).toString()
        } else {
          // 上端の場合
          table[h + 1][w] = (parseInt(table[h + 1][w]) + 1).toString()
          table[h][w + 1] = (parseInt(table[h][w + 1]) + 1).toString()
          table[h + 1][w + 1] = (parseInt(table[h + 1][w + 1]) + 1).toString()
          table[h][w - 1] = (parseInt(table[h][w - 1]) + 1).toString()
          table[h + 1][w - 1] = (parseInt(table[h + 1][w - 1]) + 1).toString()
        }
      } else if (h + 1 === HEIGHT) {
        // 下端の場合
        if (w === 0) {
          // 左下端の場合
          table[h - 1][w] = (parseInt(table[h - 1][w]) + 1).toString()
          table[h][w + 1] = (parseInt(table[h][w + 1]) + 1).toString()
          table[h - 1][w + 1] = (parseInt(table[h - 1][w + 1]) + 1).toString()
        } else if (w + 1 === WIDTH) {
          // 右下端の場合
          table[h - 1][w] = (parseInt(table[h - 1][w]) + 1).toString()
          table[h][w - 1] = (parseInt(table[h][w - 1]) + 1).toString()
          table[h - 1][w - 1] = (parseInt(table[h - 1][w - 1]) + 1).toString()
        } else {
          // 下端の場合
          table[h - 1][w] = (parseInt(table[h - 1][w]) + 1).toString()
          table[h][w + 1] = (parseInt(table[h][w + 1]) + 1).toString()
          table[h - 1][w + 1] = (parseInt(table[h - 1][w + 1]) + 1).toString()
          table[h][w - 1] = (parseInt(table[h][w - 1]) + 1).toString()
          table[h - 1][w - 1] = (parseInt(table[h - 1][w - 1]) + 1).toString()
        }
      } else {
        if (w === 0) {
          // 左端の場合
          table[h + 1][w] = (parseInt(table[h + 1][w]) + 1).toString()
          table[h][w + 1] = (parseInt(table[h][w + 1]) + 1).toString()
          table[h + 1][w + 1] = (parseInt(table[h + 1][w + 1]) + 1).toString()
          table[h - 1][w] = (parseInt(table[h - 1][w]) + 1).toString()
          table[h - 1][w + 1] = (parseInt(table[h - 1][w + 1]) + 1).toString()
        } else if (w + 1 === WIDTH) {
          // 右端の場合
          table[h + 1][w] = (parseInt(table[h + 1][w]) + 1).toString()
          table[h][w - 1] = (parseInt(table[h][w - 1]) + 1).toString()
          table[h + 1][w - 1] = (parseInt(table[h + 1][w - 1]) + 1).toString()
          table[h - 1][w] = (parseInt(table[h - 1][w]) + 1).toString()
          table[h - 1][w - 1] = (parseInt(table[h - 1][w - 1]) + 1).toString()
        } else {
          // それ以外
          table[h + 1][w] = (Number(table[h + 1][w]) + 1).toString()
          table[h][w + 1] = (parseInt(table[h][w + 1]) + 1).toString()
          table[h + 1][w + 1] = (parseInt(table[h + 1][w + 1]) + 1).toString()
          table[h - 1][w] = (parseInt(table[h - 1][w]) + 1).toString()
          table[h - 1][w + 1] = (parseInt(table[h - 1][w + 1]) + 1).toString()
          table[h][w - 1] = (parseInt(table[h][w - 1]) + 1).toString()
          table[h + 1][w - 1] = (parseInt(table[h + 1][w - 1]) + 1).toString()
          table[h - 1][w - 1] = (parseInt(table[h - 1][w - 1]) + 1).toString()
        }
      }
    }
  }
}

console.log(table)