#include <bits/stdc++.h>
#define F first 
#define S second 
#define endl "\n"
#define Endl "\n"
#define emdl "\n"
#define mod 1000000007
#define pb push_back
// #define mp make_pair
#define all(x) x.begin(),x.end()
using namespace std;
// bool sortBy(const pair<int,pair<int,int>> &a,const pair<int,pair<int,int>> &b){
// 	if(a.S.F==b.S.F)
// 		return a.F<b.F;
// 	return a.S.F<b.S.F;
// }

// #define MAXN 5000003
// int pf[MAXN]; 
// vector<int> primes;
// void sieve(){
// 	long long int i,j; 
//     pf[1] = 1; 
//     for (i=2; i<MAXN; i++) 
//     pf[i] = i;   
//     for (i=2; i*i<MAXN; i++){ 
//         if (pf[i] == i){
//             for (j=i*i; j<MAXN; j+=i) 
//                 if (pf[j]==j) 
//                     pf[j] = i; 
//         } 
//     } 
// 	for(int i=2;i<MAXN;i++){
// 		if(pf[i]==i){
// 			primes.push_back(i);
// 		}
// 	}
// }
// vector<int> factors(int x){ 
//     vector<int> ret; 
//     while (x != 1){ 
// 		int fact=pf[x];
//         ret.push_back(pf[x]); 
// 		while(fac!=1&&x%fact==0)
//         x/=fact; 
//     } 
//     return ret; 
// } 
// set<long long int>poww;
// void init(){
// 	long long int temp=1;
// 	for(int i=1;i<43;i++){
// 		poww.insert(temp);
// 		temp*=2;
// 	}
// }  

// int summ(long long int n){
//     int cnt=0;
//     while(n){
//         cnt+=n%10;
//         n/=10;
//     }
//     return cnt;
// }

void init(){
  
}


int main() {		
	ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
	int qwe=1;
 	//cin>>qwe;
	init();
	//sieve();
	while(qwe--){

		int h,w;
		cin>>h>>w;

		int a[h][w];

		string s[h];

		for(int i=0;i<h;i++){
			cin>>s[i];
			for(int j=0;j<w;j++){
				if(s[i][j]=='#'){
					a[i][j]=1;
				}else{
					a[i][j]=0;
				}
				// cout<<a[i][j]<<" ";
			}
			// cout<<endl;
		}

		int count =0;

		for(int i=1;i<h-1;i++){
			for(int j=1;j<w-1;j++){
				if(a[i][j]==0){
					continue;
				}

				// cout<<"1 ";

				if(a[i][j-1]==0&&a[i-1][j]==0&&a[i-1][j-1]==0){
					count++;
				}
				 if(a[i][j+1]==0&&a[i-1][j]==0&&a[i-1][j+1]==0){
					count++;
				} 
				if(a[i][j-1]==0&&a[i+1][j]==0&&a[i+1][j-1]==0){
					count++;
				}
				if(a[i][j+1]==0&&a[i+1][j]==0&&a[i+1][j+1]==0){
					count++;
				}
				if(a[i][j-1]==a[i-1][j]&&a[i][j-1]==1&&a[i-1][j-1]==0){
					count++;
				}
				if(a[i][j-1]==a[i+1][j]&&a[i][j-1]==1&&a[i+1][j-1]==0){
					count++;
				}
				if(a[i][j+1]==a[i-1][j]&&a[i][j+1]==1&&a[i-1][j+1]==0){
					count++;
				}
				if(a[i][j+1]==a[i+1][j]&&a[i][j+1]==1&&a[i+1][j+1]==0){
					count++;
				}
			}
			// cout<<endl;
		}

		cout<<count<<endl;

		
		

	}

	return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define rep(i,n)for(int i=0;i<(int)(n);++i)
#define fixed(n)fixed<<setprecision(n)
#define ll long long
#define ALL(a)a.begin(),a.end()
#define LLA(a)a.rbegin(),a.rend()

template<class T>void chmin(T& a,T b){
    if(a>b){
        a=b;
    }
}
template<class T>void chmax(T& a,T b){
    if(a<b){
        a=b;
    }
}

ll gcd(ll a,ll b){
    if(b==0)return a;
    else return gcd(b,a%b);
}
ll lcm(ll a,ll b){
   return a/gcd(a,b)*b;
}

const long long INF=1LL<<60;
const long long MOD=1000000007;

int main(){
    int H,W;cin>>H>>W;
    vector<vector<int>>ms(H,vector<int>(W));
    rep(i,H)rep(j,W){
        char c;cin>>c;
        if(c=='#')ms[i][j]=1;
        else ms[i][j]=0;
    }
    int res=0;
    rep(i,H-1)rep(j,W-1){
        int a=ms[i][j]+ms[i+1][j]+ms[i][j+1]+ms[i+1][j+1];
        if(a==1||a==3)res++;
    }
    cout<<res;
}