package main
import "fmt"
func main() {
n, m := 0, 0
fmt.Scanf("%d", &n)
fmt.Scanf("%d", &m)
bys := make([][]byte, n)
for i := 0; i < n; i++ {
bys[i] = make([]byte, m)
}
fmt.Scanln()
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
fmt.Scanf("%c", &bys[i][j])
}
fmt.Scanln()
}
idx := [][]int{{-1, -1}, {-1, 0}, {0, -1}, {1, -1}, {-1, 1}, {1, 1}, {1, 0}, {0, 1}}
check := func(i, j int) bool {
if i >= 0 && i < n && j >= 0 && j < m {
return true
}
return false
}
cnt := func(i, j int) int {
sum := 0
for _, v := range idx {
l, r := v[0]+i, v[1]+j
if check(l, r) && bys[l][r] == '*' {
sum++
}
}
return sum
}
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
if bys[i][j] == '?' {
bys[i][j] = byte(cnt(i, j) + '0')
}
}
}
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
fmt.Printf("%c", bys[i][j])
}
fmt.Println()
}
}