#include"bits/stdc++.h"
using namespace std;

int main() {
	int H, W;
	cin >> H >> W;
	vector<string>s(50);
	for (int i = 0; i < H; i++) {
		cin >> s.at(i);
	}
	if (H == 1 && W == 1) {//1つのみ
		if (s.at(0).at(0) != '#') {
			s.at(0).at(0) = '0';
		}
	}
	if (H == 1 && W == 2) {//横並び
		if (s.at(0).at(0) != '#') {
			s.at(0).at(0) = '0';
			if (s.at(0).at(1) == '#') {
				s.at(0).at(0) += 1;
			}
		}

		if (s.at(0).at(1) != '#') {
			s.at(0).at(1) = '0';
			if (s.at(0).at(0) == '#') {
				s.at(0).at(1) += 1;
			}
		}
	}
	if (H == 1 && W > 2) {//横並びα
		if (s.at(0).at(0) != '#') {
			s.at(0).at(0) = '0';
			if (s.at(0).at(1) == '#') {
				s.at(0).at(0) += 1;
			}
		}

		if (s.at(0).at(W - 1) != '#') {
			s.at(0).at(W - 1) = '0';
			if (s.at(0).at(W - 2) == '#') {
				s.at(0).at(W - 1) += 1;
			}
		}
		for (int m = 1; m < W - 1; m++) {
			if (s.at(0).at(m) != '#') {
				s.at(0).at(m) = '0';
				if (s.at(0).at(m + 1) == '#') {
					s.at(0).at(m) += 1;
				}
				if (s.at(0).at(m - 1) == '#') {
					s.at(0).at(m) += 1;
				}
			}
		}


	}
	if (H == 2 && W == 1) {//縦並び
		if (s.at(0).at(0) != '#') {
			s.at(0).at(0) = '0';
			if (s.at(1).at(0) == '#') {
				s.at(0).at(0) += 1;
			}
		}

		if (s.at(1).at(0) != '#') {
			s.at(1).at(0) = '0';
			if (s.at(0).at(0) == '#') {
				s.at(1).at(0) += 1;
			}
		}
	}
	if (H > 2 && W == 1) {//縦並びα
		if (s.at(0).at(0) != '#') {
			s.at(0).at(0) = '0';
			if (s.at(1).at(0) == '#') {
				s.at(0).at(0) += 1;
			}
		}

		if (s.at(H - 1).at(0) != '#') {
			s.at(H - 1).at(0) = '0';
			if (s.at(H - 2).at(0) == '#') {
				s.at(H - 1).at(0) += 1;
			}
		}
		for (int i = 1; i < H - 1; i++) {
			if (s.at(i).at(0) != '#') {
				s.at(i).at(0) = '0';
				if (s.at(i - 1).at(0) == '#') {
					s.at(i).at(0) += 1;
				}
				if (s.at(i + 1).at(0) == '#') {
					s.at(i).at(0) += 1;
				}
			}
		}


	}

	if (H > 1 && W > 1) {//角があるとき
		if (s.at(0).at(0) != '#') {
			s.at(0).at(0) = '0';
			if (s.at(0).at(1) == '#') {
				s.at(0).at(0) += 1;
			}
			if (s.at(1).at(1) == '#') {
				s.at(0).at(0) += 1;
			}
			if (s.at(1).at(0) == '#') {
				s.at(0).at(0) += 1;
			}

		}
		if (s.at(0).at(W - 1) != '#') {
			s.at(0).at(W - 1) = '0';
			if (s.at(0).at(W - 2) == '#') {
				s.at(0).at(W - 1) += 1;
			}
			if (s.at(1).at(W - 1) == '#') {
				s.at(0).at(W - 1) += 1;
			}
			if (s.at(1).at(W - 2) == '#') {
				s.at(0).at(W - 1) += 1;
			}

		}
		if (s.at(H - 1).at(0) != '#') {
			s.at(H - 1).at(0) = '0';
			if (s.at(H - 1).at(1) == '#') {
				s.at(H - 1).at(0) += 1;
			}
			if (s.at(H - 2).at(1) == '#') {
				s.at(H - 1).at(0) += 1;
			}
			if (s.at(H - 2).at(0) == '#') {
				s.at(H - 1).at(0) += 1;
			}

		}
		if (s.at(H - 1).at(W - 1) != '#') {
			s.at(H - 1).at(W - 1) = '0';
			if (s.at(H - 1).at(W - 2) == '#') {
				s.at(H - 1).at(W - 1) += 1;
			}
			if (s.at(H - 2).at(W - 1) == '#') {
				s.at(H - 1).at(W - 1) += 1;
			}
			if (s.at(H - 2).at(W - 2) == '#') {
				s.at(H - 1).at(W - 1) += 1;
			}

		}
	}

	if (W > 2 && H > 1) {//横3以上縦2以上
		for (int m = 1; m < W - 1; m++) {
			if (s.at(0).at(m) != '#') {
				s.at(0).at(m) = '0';
				if (s.at(0).at(m + 1) == '#') {
					s.at(0).at(m) += 1;
				}
				if (s.at(1).at(m + 1) == '#') {
					s.at(0).at(m) += 1;
				}
				if (s.at(1).at(m) == '#') {
					s.at(0).at(m) += 1;
				}
				if (s.at(0).at(m - 1) == '#') {
					s.at(0).at(m) += 1;
				}
				if (s.at(1).at(m - 1) == '#') {
					s.at(0).at(m) += 1;
				}
			}
		}
		for (int m = 1; m < W - 1; m++) {
			if (s.at(H - 1).at(m) != '#') {
				s.at(H - 1).at(m) = '0';
				if (s.at(H - 1).at(m + 1) == '#') {
					s.at(H - 1).at(m) += 1;
				}
				if (s.at(H - 1).at(m - 1) == '#') {
					s.at(H - 1).at(m) += 1;
				}
				if (s.at(H - 2).at(m) == '#') {
					s.at(H - 1).at(m) += 1;
				}
				if (s.at(H - 2).at(m + 1) == '#') {
					s.at(H - 1).at(m) += 1;
				}
				if (s.at(H - 2).at(m - 1) == '#') {
					s.at(H - 1).at(m) += 1;
				}
			}
		}
	}
	if (H > 2 && W > 1) {//縦3以上横2以上
		for (int i = 1; i < H - 1; i++) {
			if (s.at(i).at(0) != '#') {
				s.at(i).at(0) = '0';
				if (s.at(i).at(1) == '#') {
					s.at(i).at(0) += 1;
				}
				if (s.at(i - 1).at(1) == '#') {
					s.at(i).at(0) += 1;
				}
				if (s.at(i - 1).at(0) == '#') {
					s.at(i).at(0) += 1;
				}
				if (s.at(i + 1).at(1) == '#') {
					s.at(i).at(0) += 1;
				}
				if (s.at(i + 1).at(0) == '#') {
					s.at(i).at(0) += 1;
				}
			}
		}
		for (int i = 1; i < H - 1; i++) {
			if (s.at(i).at(W - 1) != '#') {
				s.at(i).at(W - 1) = '0';
				if (s.at(i).at(W - 2) == '#') {
					s.at(i).at(W - 1) += 1;
				}
				if (s.at(i - 1).at(W - 2) == '#') {
					s.at(i).at(W - 1) += 1;
				}
				if (s.at(i - 1).at(W - 1) == '#') {
					s.at(i).at(W - 1) += 1;
				}
				if (s.at(i + 1).at(W - 1) == '#') {
					s.at(i).at(W - 1) += 1;
				}
				if (s.at(i + 1).at(W - 2) == '#') {
					s.at(i).at(W - 1) += 1;
				}
			}
		}
	}
	if (H > 2 && W > 2) {//縦横3以上
		for (int i = 1; i < H - 1; i++) {
			for (int m = 1; m < W - 1; m++) {
				if (s.at(i).at(m) != '#') {
					s.at(i).at(m) = '0';
					if (s.at(i).at(m + 1) == '#') {
						s.at(i).at(m) += 1;
					}
					if (s.at(i).at(m - 1) == '#') {
						s.at(i).at(m) += 1;
					}
					if (s.at(i + 1).at(m) == '#') {
						s.at(i).at(m) += 1;
					}
					if (s.at(i + 1).at(m + 1) == '#') {
						s.at(i).at(m) += 1;
					}
					if (s.at(i + 1).at(m - 1) == '#') {
						s.at(i).at(m) += 1;
					}
					if (s.at(i - 1).at(m) == '#') {
						s.at(i).at(m) += 1;
					}
					if (s.at(i - 1).at(m + 1) == '#') {
						s.at(i).at(m) += 1;
					}
					if (s.at(i - 1).at(m - 1) == '#') {
						s.at(i).at(m) += 1;
					}
				}

			}
		}
	}
	for (int i = 0; i < H; i++) {
		cout << s.at(i) << endl;
	}
}

Measured memory_bytes: 256