#include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3f
#define EPS (1e-10)
#define MOD 1000000007
using namespace std;
typedef long long ll;
typedef pair<int,int>P;

char s[600][600];
char t[1200][1200];
int sum[1200][1200];
int sum2[1200][1200];

signed main(){
	int h,w;scanf("%d%d",&h,&w);
	int H=2*(h+w),W=2*(h+w);
	map<int,vector<int>>mp;
	map<int,vector<int>>mp2;
	rep(i,H)rep(j,W)t[i][j]='.';
	rep(i,h){
		scanf("%s",s[i]);
		rep(j,w){
			if(s[i][j]=='#'){
				mp[i-j+h+w].push_back(i+j+h+w);
				mp2[i+j+h+w].push_back(i-j+h+w);
				t[i-j+h+w][i+j+h+w]='#';
			}
		}
	}
	rep(i,H)rep(j,W){
		if(j)sum[i][j]+=sum[i][j-1];
		if(t[i][j]=='#')sum[i][j]++;
	}
	rep(i,W)rep(j,H){
		if(j)sum2[j][i]+=sum2[j-1][i];
		if(t[j][i]=='#')sum2[j][i]++;
	}
	//~ rep(i,H)cout<<t[i]<<endl;
	//~ rep(i,H){
		//~ rep(j,W)cout<<sum[i][j];
		//~ cout<<endl;
	//~ }
	//~ cout<<endl;
	//~ rep(i,H){
		//~ rep(j,W)cout<<sum2[i][j];
		//~ cout<<endl;
	//~ }
	int ans=0;
	for(auto&p:mp){
		auto&v=p.second;
		sort(v.begin(),v.end());
		rep(i,v.size())for(int j=i+1;j<v.size();j++){
			int d=v[j]-v[i];
			ans+=sum[p.first-d][v[j]]-sum[p.first-d][v[i]-1];
			ans+=sum[p.first+d][v[j]]-sum[p.first+d][v[i]-1];
		}
	}
	for(auto&p:mp2){
		auto&v=p.second;
		sort(v.begin(),v.end());
		rep(i,v.size())for(int j=i+1;j<v.size();j++){
			int d=v[j]-v[i];
			ans+=sum2[v[j]-1][p.first-d]-sum2[v[i]][p.first-d];
			ans+=sum2[v[j]-1][p.first+d]-sum2[v[i]][p.first+d];
		}
	}
	cout<<ans<<endl;
}
/*
5 11
..#...#....
...........
#...#...#..
...........
..#...#....
*/