import java.util.ArrayList ;
import java.util.List ;
import java.util.Scanner ;
/**
* Created by lethe on 10/21/2017.
*/
class Matrix{
int n;
int m;
public Matrix
( int n,
int m,
String [ ] [ ] giatri
) { this .n = n;
this .m = m;
this .giatri = giatri;
}
public int getN( ) {
return n;
}
public void setN( int n) {
this .n = n;
}
public int getM( ) {
return m;
}
public void setM( int m) {
this .m = m;
}
public String [ ] [ ] getGiatri
( ) { return giatri;
}
public void setGiatri
( String [ ] [ ] giatri
) { this .giatri = giatri;
}
}
public class Main {
public void khoitao
( int n,
int m ,
String [ ] [ ] s
) { for ( int i= 0 ; i< n+ 2 ; i++ ) {
for ( int j= 0 ; j< m+ 2 ; j++ ) {
s[ i] [ j] = "0" ;
}
}
}
public static void main
( String [ ] args
) { Main bcbom = new Main( ) ;
//read matrix
Scanner scanner
= new Scanner
( System .
in ) ; List< Matrix> list = new ArrayList<> ( ) ;
while ( ! scanner.hasNext ( "0" ) ) {
int n
= Integer .
parseInt ( scanner.
next ( ) ) ; int m
= Integer .
parseInt ( scanner.
next ( ) ) ; bcbom.khoitao ( n,m,mt) ;
for ( int i= 1 ; i<= n; i++ ) {
String token
= scanner.
next ( ) ; for ( int j= 1 ; j<= m; j++ ) {
mt[ i] [ j] = token.substring ( j- 1 ,j) ;
}
}
list.add ( new Matrix( n,m,mt) ) ;
}
//processing
for ( int stt = 0 ; stt< list.size ( ) ; stt++ ) {
for ( int i= 1 ; i<= list.get ( stt) .getN ( ) ; i++ ) {
for ( int j= 1 ; j<= list.get ( stt) .getM ( ) ; j++ ) {
if ( list.get ( stt) .getGiatri ( ) [ i] [ j] .equals ( "." ) ) {
int count = 0 ;
if ( list.get ( stt) .getGiatri ( ) [ i- 1 ] [ j- 1 ] .equals ( "*" ) ) {
count++;
}
if ( list.get ( stt) .getGiatri ( ) [ i- 1 ] [ j] .equals ( "*" ) ) {
count++;
}
if ( list.get ( stt) .getGiatri ( ) [ i- 1 ] [ j+ 1 ] .equals ( "*" ) ) {
count++;
}
if ( list.get ( stt) .getGiatri ( ) [ i] [ j- 1 ] .equals ( "*" ) ) {
count++;
}
if ( list.get ( stt) .getGiatri ( ) [ i] [ j+ 1 ] .equals ( "*" ) ) {
count++;
}
if ( list.get ( stt) .getGiatri ( ) [ i+ 1 ] [ j+ 1 ] .equals ( "*" ) ) {
count++;
}
if ( list.get ( stt) .getGiatri ( ) [ i+ 1 ] [ j] .equals ( "*" ) ) {
count++;
}
if ( list.get ( stt) .getGiatri ( ) [ i+ 1 ] [ j+ 1 ] .equals ( "*" ) ) {
count++;
}
} else {
}
}
}
}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKaW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKLyoqCiAqIENyZWF0ZWQgYnkgbGV0aGUgb24gMTAvMjEvMjAxNy4KICovCmNsYXNzIE1hdHJpeHsKICAgIGludCBuOwogICAgaW50IG07CiAgICBTdHJpbmdbXVtdIGdpYXRyaTsKCiAgICBwdWJsaWMgTWF0cml4KGludCBuLCBpbnQgbSwgU3RyaW5nW11bXSBnaWF0cmkpIHsKICAgICAgICB0aGlzLm4gPSBuOwogICAgICAgIHRoaXMubSA9IG07CiAgICAgICAgdGhpcy5naWF0cmkgPSBnaWF0cmk7CiAgICB9CgogICAgcHVibGljIGludCBnZXROKCkgewogICAgICAgIHJldHVybiBuOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHNldE4oaW50IG4pIHsKICAgICAgICB0aGlzLm4gPSBuOwogICAgfQoKICAgIHB1YmxpYyBpbnQgZ2V0TSgpIHsKICAgICAgICByZXR1cm4gbTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBzZXRNKGludCBtKSB7CiAgICAgICAgdGhpcy5tID0gbTsKICAgIH0KCiAgICBwdWJsaWMgU3RyaW5nW11bXSBnZXRHaWF0cmkoKSB7CiAgICAgICAgcmV0dXJuIGdpYXRyaTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBzZXRHaWF0cmkoU3RyaW5nW11bXSBnaWF0cmkpIHsKICAgICAgICB0aGlzLmdpYXRyaSA9IGdpYXRyaTsKICAgIH0KfQpwdWJsaWMgY2xhc3MgTWFpbiB7CgogICAgcHVibGljIHZvaWQga2hvaXRhbyhpbnQgbiwgaW50IG0gLFN0cmluZ1tdW11zKXsKICAgICAgICBmb3IoaW50IGk9MDtpPG4rMjtpKyspewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG0rMjtqKyspewogICAgICAgICAgICAgICAgc1tpXVtqXSA9ICIwIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBNYWluIGJjYm9tID0gbmV3IE1haW4oKTsKICAgICAgICAvL3JlYWQgbWF0cml4CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBMaXN0PE1hdHJpeD4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgIFN0cmluZyBzID0gIm5vIjsKICAgICAgICB3aGlsZSghc2Nhbm5lci5oYXNOZXh0KCIwIikpewogICAgICAgICAgICBpbnQgbiA9IEludGVnZXIucGFyc2VJbnQoc2Nhbm5lci5uZXh0KCkpOwogICAgICAgICAgICBpbnQgbSA9IEludGVnZXIucGFyc2VJbnQoc2Nhbm5lci5uZXh0KCkpOwogICAgICAgICAgICBTdHJpbmdbXVtdbXQgPSBuZXcgU3RyaW5nW24rMl1bbSsyXTsKICAgICAgICAgICAgYmNib20ua2hvaXRhbyhuLG0sbXQpOwogICAgICAgICAgICBmb3IoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgICAgICAgICBTdHJpbmcgdG9rZW4gPSBzY2FubmVyLm5leHQoKTsKICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MTtqPD1tO2orKyl7CiAgICAgICAgICAgICAgICAgICAgbXRbaV1bal09IHRva2VuLnN1YnN0cmluZyhqLTEsaik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGlzdC5hZGQobmV3IE1hdHJpeChuLG0sbXQpKTsKICAgICAgICB9CgogICAgICAgIC8vcHJvY2Vzc2luZwogICAgICAgIGZvcihpbnQgc3R0ID0wO3N0dDxsaXN0LnNpemUoKTtzdHQrKyl7CiAgICAgICAgICAgIGZvcihpbnQgaT0xO2k8PWxpc3QuZ2V0KHN0dCkuZ2V0TigpO2krKyl7CiAgICAgICAgICAgICAgICBmb3IgKGludCBqPTE7ajw9bGlzdC5nZXQoc3R0KS5nZXRNKCk7aisrKXsKICAgICAgICAgICAgICAgICAgICBpZihsaXN0LmdldChzdHQpLmdldEdpYXRyaSgpW2ldW2pdLmVxdWFscygiLiIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYobGlzdC5nZXQoc3R0KS5nZXRHaWF0cmkoKVtpLTFdW2otMV0uZXF1YWxzKCIqIikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYobGlzdC5nZXQoc3R0KS5nZXRHaWF0cmkoKVtpLTFdW2pdLmVxdWFscygiKiIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxpc3QuZ2V0KHN0dCkuZ2V0R2lhdHJpKClbaS0xXVtqKzFdLmVxdWFscygiKiIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxpc3QuZ2V0KHN0dCkuZ2V0R2lhdHJpKClbaV1bai0xXS5lcXVhbHMoIioiKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZihsaXN0LmdldChzdHQpLmdldEdpYXRyaSgpW2ldW2orMV0uZXF1YWxzKCIqIikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYobGlzdC5nZXQoc3R0KS5nZXRHaWF0cmkoKVtpKzFdW2orMV0uZXF1YWxzKCIqIikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYobGlzdC5nZXQoc3R0KS5nZXRHaWF0cmkoKVtpKzFdW2pdLmVxdWFscygiKiIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYobGlzdC5nZXQoc3R0KS5nZXRHaWF0cmkoKVtpKzFdW2orMV0uZXF1YWxzKCIqIikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGNvdW50KTsKICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiKiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0KfQo=