#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
typedef long long ll;
int s[310][310],n,m;
char sa[310][310],sb[310][310];
int get(int x,int y){
	if(x<=0){
		y+=1-x;
		x=1;
	}
	return y<=m?s[x][y]:0;
}
ll count(){
	int i,j,k,d;
	ll res;
	memset(s,0,sizeof(s));
	for(i=n;i>0;i--){
		for(j=m;j>0;j--){
			s[i][j]=s[i+1][j+1]+(sa[i][j]=='#');
		}
	}
	res=0;
	for(i=1;i<=n;i++){
		for(j=0;i+j<=n&&1+j<=m;j++){
			if(sa[i+j][1+j]=='.')continue;
			for(k=j+1;i+k<=n&&1+k<=m;k++){
				if(sa[i+k][1+k]=='.')continue;
				d=k-j;
				res+=get(i+j-d,1+j+d)-get(i+j,1+j+d*2);	
			}
		}
	}
	for(i=2;i<=m;i++){
		for(j=0;1+j<=n&&i+j<=m;j++){
			if(sa[1+j][i+j]=='.')continue;
			for(k=j+1;1+k<=n&&i+k<=m;k++){
				if(sa[1+k][i+k]=='.')continue;
				d=k-j;
				res+=get(1+j-d,i+j+d)-get(1+j,i+j+d*2);
			}
		}
	}
	return res;
}
void rot(){
	int i,j;
	memset(sb,0,sizeof(sb));
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++)sb[j][n-i+1]=sa[i][j];
	}
	swap(n,m);
	memcpy(sa,sb,sizeof(sb));
}
int main(){
	int i;
	ll res;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)scanf("%s",sa[i]+1);
	res=count();
	rot();
	res+=count();
	rot();
	res+=count();
	rot();
	res+=count();
	printf("%lld",res);
}