← Home
#include<bits/stdc++.h>
using namespace std;
const int N=2005;
char s[N];
bool a[N][N],b[N][N];
bool up[N][N],dn[N][N];
int n,m;
long long ans;
void solve(bool a[N][N],int n,int m,int w){
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
			up[i][j]=up[i-1][j]|a[i][j];
	for (int i=n;i;i--)
		for (int j=1;j<=m;j++)
			dn[i][j]=(i==n?a[i][j]:dn[i+1][j]|a[i][j]);
	for (int i=2;i<n;i++){
		int v=0;
		if (!a[i][1]&&w)v=1;
		up[i][1]=dn[i][1]=1;
		for (int j=2;j<m;j++){
			if (a[i][j]){
				v=0; continue;
			}
			ans+=((!up[i][j])+(!dn[i][j]))*v;
			ans+=(!up[i][j]&&!dn[i][j-1])+(!dn[i][j]&&!up[i][j-1]);
			v+=(!up[i][j-1])+(!dn[i][j-1]);
		}
		if (!a[i][m]&&w)
			ans+=v+(!up[i][m-1])+(!dn[i][m-1]);
	}
	if (w){
		for (int j=2;j<m;j++)
			ans+=(!up[n][j]);
	}
}
int main(){
	scanf("%d%d",&n,&m);
	for (int i=1;i<=n;i++){
		scanf("%s",s+1);
		for (int j=1;j<=m;j++)
			a[i][j]=b[j][i]=(s[j]=='#');
	}
	solve(a,n,m,1);
	solve(b,m,n,0);
	printf("%lld\n",ans);
}