#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <map>
#include <list>
#include <set>
#include <numeric>
#include <queue>
#include <stack>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <climits>
#include <cfloat>
#include <ctime>
#include <complex>
#include <cassert>
#include <array>
#include <bitset> 
#include <unordered_map>
#include <random>

using namespace std;
typedef long long LL;
typedef pair<int,int> P;

char s[302][302];
int t[601][601];
int d0[601][601];
int d1[601][601];

int main() {
	int H,W;
	cin >> H >> W;
	for(int i=0;i<H;i++){
		cin >> s[i];
		for(int j=0;j<W;j++){
			if(s[i][j]=='#'){
				t[1+i+j][1+i+W-j]=1;
			}
		}
	}
	int S=W+H;
	for(int i=1;i<=S;i++){
		for(int j=1;j<=S;j++){
			d0[i][j]=d1[i][j]=t[i][j];
			d0[i][j]+=d0[i-1][j];
			d1[i][j]+=d1[i][j-1];
		}
	}
	int ret=0;
	for(int i=1;i<=S;i++){
		for(int j=1;j<=S;j++){
			if(!t[i][j])continue;
			for(int k=j+1;k<=S;k++){
				if(!t[i][k])continue;
				int d=k-j;
				if(i-d>=1){
					ret+=d1[i-d][k]-d1[i-d][j-1];
				}
				if(i+d<=S){
					ret+=d1[i+d][k]-d1[i+d][j-1];
				}
			}
			for(int k=i+2;k<=S;k++){
				if(!t[k][j])continue;
				int d=k-i;
				if(j-d>=1){
					ret+=d0[k-1][j-d]-d0[i][j-d];
				}
				if(j+d<=S){
					ret+=d0[k-1][j+d]-d0[i][j+d];
				}
			}
		}
	}

	cout << ret << endl;

	return 0;
}

