#include <bits/stdc++.h>
#define y1 __zzd001
using namespace std;
typedef long long LL;
LL read(){
	LL x=0;
	char ch=getchar();
	while (!isdigit(ch))
		ch=getchar();
	while (isdigit(ch))
		x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	return x;
}
const int N=605;
int n,m;
int a[N][N],R[N][N],C[N][N];
char g[N][N];
int main(){
	n=read(),m=read();
	for (int i=1;i<=n;i++){
		scanf("%s",g[i]+1);
		for (int j=1;j<=m;j++)
			if (g[i][j]=='#')
				a[i+j][i-j+300]=1;
	}
	int n=600;
	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++){
			R[i][j]=R[i][j-1]+a[i][j];
			C[i][j]=C[i-1][j]+a[i][j];
		}
	LL ans=0;
	for (int x=1;x<=n;x++)
		for (int y1=1,t;y1<=n;y1++)
			if (a[x][y1])
				for (int y2=y1+1;y2<=n;y2++){
					if (!a[x][y2])
						continue;
					t=y2-y1;
					if (x>t)
						ans+=R[x-t][y2]-R[x-t][y1-1];
					if (x+t<=n)
						ans+=R[x+t][y2]-R[x+t][y1-1];
				}
	for (int x=1;x<=n;x++)
		for (int y1=1,t;y1<=n;y1++)
			if (a[y1][x])
				for (int y2=y1+1;y2<=n;y2++){
					if (!a[y2][x])
						continue;
					t=y2-y1;
					if (x>t)
						ans+=C[y2-1][x-t]-C[y1][x-t];
					if (x+t<=n)
						ans+=C[y2-1][x+t]-C[y1][x+t];
				}
	cout << ans;
	return 0;
}