#include <fstream>
#define I_F "rectangle.in"
#define O_F "rectangle.out"
#define MAX 1000
using namespace std;
long map[MAX][MAX];
int n,m;
long ans;
void Input();
void Ycl();
long Pd(int x1, int y1, int x2, int y2);
void Search();
void Output();
int main()
{
Input();
Ycl();
Search();
Output();
return 0;
}
void Input()
{
ifstream fin(I_F);
int i,j;
char t;
fin>>n>>m;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
fin>>t;
if (t=='*')
map[i][j]=1;
}
fin.close();
}
void Ycl()
{
int i,j;
for (i=1; i<n; i++)
map[i][0]+=map[i-1][0];
for (j=1; j<m; j++)
map[0][j]+=map[0][j-1];
for (i=1; i<n; i++)
for (j=1; j<m; j++)
map[i][j]=map[i-1][j]+map[i][j-1]-map[i-1][j-1]+map[i][j];
}
long Pd(int x1, int y1, int x2, int y2)
{
long t=map[x2][y2];
if (x1>0)
t-=map[x1-1][y2];
if (y1>0)
t-=map[x2][y1-1];
if ((x1>0)&&(y1>0))
t+=map[x1-1][y1-1];
return t;
}
void Search()
{
int i,j,k,l;
for (i=0; i<n; i++)
for (j=i; j<n; j++)
for (k=0; k<m; k++)
for (l=k; l<m; l++)
if (Pd(i,k,j,l)==0)
ans++;
}
void Output()
{
ofstream fout(O_F);
fout<<ans<<'\n';
fout.close();
}