#define _USE_MATH_DEFINES
#define _CRT_SECURE_NO_WARNINGS

#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<bitset>

#include<unordered_set>

using namespace std;

#define dprint(Exp,...) if(Exp){fprintf(stderr, __VA_ARGS__);}
#define printe(...) fprintf(stderr, __VA_ARGS__);
#define PrtExp(_Exp)  cerr<< #_Exp <<" = "<< (_Exp)
#define PrtExpN(_Exp)  cerr<< #_Exp <<" = "<< (_Exp) <<"\n"
#define PRINT(_Exp)  cerr<< #_Exp <<" = "<< (_Exp) <<"\n"


#define SINT(n) scanf("%d",&n)
#define SINT2(n,m) scanf("%d %d",&n,&m)
#define SINT3(n,m,o) scanf("%d %d %d",&n,&m,&o)
#define SINT4(n,m,o,p) scanf("%d %d %d %d",&n,&m,&o,&p)
#define SINT5(n,m,o,p,q) scanf("%d %d %d %d %d",&n,&m,&o,&p,&q)
#define SLL(n) scanf("%lld",&n)
#define SLL2(n,m) scanf("%lld %lld",&n,&m)
#define SLL3(n,m,o) scanf("%lld %lld %lld",&n,&m,&o)
#define SST(s) scanf("%s",s)
#define SCH(c) scanf("%c",&c)

#define GC() getchar()

#define PINT(n) printf("%d",(int)(n))
#define PINT2(n,m) printf("%d %d",(int)(n),(int)(m))
#define PINT3(n,m,l) printf("%d %d %d",(int)(n),(int)(m),(int)(l))
#define PLL(n) printf("%lld",(long long)(n))
#define PST(s) printf("%s",(s))
#define PCH(s) printf("%c",(s))

#define PINTN(n) printf("%d\n",(int)(n))
#define PINT2N(n,m) printf("%d %d\n",(int)(n),(int)(m))
#define PINT3N(n,m,l) printf("%d %d %d\n",(int)(n),(int)(m),(int)(l))
#define PLLN(n) printf("%lld\n",(long long)(n))
#define PSTN(s) printf("%s\n",(s))
#define PCHN(s) printf("%c\n",(s))

#define PSP() printf(" ")
#define PN() printf("\n")

#define PC(c) putchar(c)
#define CSP (' ')
#define SN ("\n")

#define rep(i,a) for(int i=0;i<a;i++)
#define reP(i,a) for(int i=0;i<=a;i++)
#define Rep(i,a) for(int i=a-1;i>=0;i--)
#define ReP(i,a) for(int i=a;i>=0;i--)

#define rEp(i,a) for(i=0;i<a;i++)
#define rEP(i,a) for(i=0;i<=a;i++)
#define REp(i,a) for(i=a-1;i>=0;i--)
#define REP(i,a) for(i=a;i>=0;i--)

#define repft(i,a,b) for(int i=a;i<b;i++)
#define repfT(i,a,b) for(int i=a;i<=b;i++)
#define Repft(i,a,b) for(int i=a-1;i>=b;i--)
#define RepfT(i,a,b) for(int i=a;i>=b;i--)

#define foreach(a,it) for(auto it = a.begin(); it != a.end(); ++it)

#define FILL(a,v) fill(begin(a),end(a), v)
#define FILL0(a) memset(a,0,sizeof(a))
#define FILL1(a) memset(a,-1,sizeof(a))

typedef long long ll;

typedef unsigned long long ull;
typedef pair<int, int> Pi;
typedef pair<ll, ll>   Pll;


const int INF = 1000000009;
const ll INFLL = 0x1f1f1f1f1f1f1f1fLL;//2,242,545,357,980,376,863

template <class A, class B> inline ostream& operator<<(ostream& st, const pair<A, B>& P) { return st << "(" << P.first << "," << P.second << ")"; };
template <class A, class B> inline pair<A, B> operator+(const pair<A, B>& P, const pair<A, B>& Q) { return pair<A, B>(P.first + Q.first, P.second + Q.second); };
template <class A, class B> inline pair<A, B> operator-(const pair<A, B>& P, const pair<A, B>& Q) { return pair<A, B>(P.first - Q.first, P.second - Q.second); };

#define fs  first	
#define sc  second

int bitcount(unsigned long long bits) {
	bits = (bits & 0x5555555555555555LL) + (bits >> 1 & 0x5555555555555555LL);
	bits = (bits & 0x3333333333333333LL) + (bits >> 2 & 0x3333333333333333LL);
	bits = (bits & 0x0f0f0f0f0f0f0f0fLL) + (bits >> 4 & 0x0f0f0f0f0f0f0f0fLL);
	bits = (bits & 0x00ff00ff00ff00ffLL) + (bits >> 8 & 0x00ff00ff00ff00ffLL);
	bits = (bits & 0x0000ffff0000ffffLL) + (bits >> 16 & 0x0000ffff0000ffffLL);
	return (bits & 0x00000000ffffffffLL) + (bits >> 32 & 0x00000000ffffffffLL);
}



char s[303][303];
int h, w;


int mem[666];

ll check() {
	ll ret = 0;
	rep(i, h){
		FILL0(mem);
		rep(j, w) {
			rep(y, i) {
				if(s[y][j] == '#') mem[y + j]++;
			}
			for (int k = 1; ; ++k) {
				if (i + k >= h) break;
				if (j + k >= w) break;
				if (s[i + k][j] != '#') continue;
				if (s[i][j + k] != '#') continue;
				if (i + j - k >= 0) {
					ret += mem[i + j - k];
					if (mem[i + j - k] > 0) {
						// cout << "(" << j << ", " << i << ") " << k << "  " << mem[i + j - k] << endl;
						//cout << "(" << j << ", " << i << ") " << k << "  " << mem[i + j - k] << "  : "; rep(z, i + j+1) cout << mem[z] << " "; cout << endl;
					}
				}
				
				/*
				for (int y = 0; y < i; ++y) {
					for (int x = 0; x <= j; ++x) {
						if (abs(x - j) + abs(y - i) != k) continue;
						if (s[y][x] == '#') {
							//cout << "(" << j << ", " << i << ") " << k << " [" << x << ", " << y << "]" << endl;
							++ret;
						}
					}
				}
				//*/
			}
		}
	}
	return ret;
}

int main() {
	FILL0(s);
	cin >> h >> w;
	int ma = max(h, w);
	rep(i, h) {
		cin >> s[i];
	}
	ll ret = 0;
	rep(xx, 4) {
		//cout << "=============" << endl;
		ll r = check();
		//rep(i, h) cout << s[i] << endl;

		//cout << r << endl;
		ret += r;
		rep(i, h) reverse(s[i], s[i] + w);
		for (int i = 0; i < ma; ++i) {
			for (int j = i + 1; j <= ma; ++j) {
				swap(s[i][j], s[j][i]);
			}
		}
		swap(h, w);
	}
	cout << ret << endl;


}


Measured memory_bytes: 512