#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<set>
#include<map>
#include<queue>
#include<vector>
//#define up(i,a,b) for(int i=(a);i<=(b);i++)
//#define dw(i,a,b) for(int i=(a);i>=(b);i--)
//#define ing long long
#define il inline
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define lowbit(x) (x&(-x))
#ifdef ONLINE_JUDGE
char buf[1 << 23] , * p1 = buf , * p2 = buf , obuf[1 << 23] , * O = obuf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif
using namespace std;
const int N=200010,M=2010,inf=0x3f3f3f3f,mod=1e9+7;
const double PI=acos(-1),eps=1e-8;
int n,m;
int ans;
int a[M],tmp;
char opt;
il int read(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)){
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return x*f;
}
int main(){
//freopen(".in","r",stdin);freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>opt;
if(opt=='.') a[j]++;
else a[j]=0;
}
for(int j=1;j<=m;j++){
tmp=a[j];
for(int k=j;k<=m&&a[k];k++){
tmp=min(tmp,a[k]);
ans=ans+tmp;
}
}
}
cout<<ans<<"\n";
return 0;
}