#include <bits/stdc++.h>
using namespace std;
using ll=long long;
template<class T> using V = vector<T>;
template<class T, class U> using P = pair<T, U>;
using vll = V<ll>;
using vvll = V<vll>;
#define rep(i, k, n) for (ll i=k; i<(ll)n; ++i)
#define REP(i, n) rep(i, 0, n)

const ll MOD = (ll)1e9 + 7;
const ll HIGHINF = (ll)1e18;

ll h, w, res;
vvll a(666, vll(666)), hs(666, vll(666)), vs(666, vll(666));
V<string> s(333);

int main() {
  cin >> h >> w;
  REP(i, h) {
    cin >> s.at(i);
    REP(j, w) if (s.at(i).at(j)=='#') a.at(i+j+1).at(i-j+300) = 1;
  }
  rep(i,1,600) rep(j,1,600) {
    hs.at(i).at(j) += a.at(i).at(j) + hs.at(i).at(j-1);
    vs.at(i).at(j) += a.at(i).at(j) + vs.at(i-1).at(j);
  }
  rep(i,1,600) rep(j,1,600) rep(k,j+1,600) {
    int d = k-j;
    if (a.at(i).at(j) && a.at(i).at(k)) {
      if (i-d>=0) {
        res += hs.at(i-d).at(k) - hs.at(i-d).at(j-1);
        res -= a.at(i-d).at(j) + a.at(i-d).at(k);
      }
      if (i+d<=600) {
        res += hs.at(i+d).at(k) - hs.at(i+d).at(j-1);
        res -= a.at(i+d).at(j) + a.at(i+d).at(k);
      }
    }
    if (a.at(j).at(i) && a.at(k).at(i)) {
      if (i-d>=0) res += vs.at(k).at(i-d) - vs.at(j-1).at(i-d);
      if (i+d<=600) res += vs.at(k).at(i+d) - vs.at(j-1).at(i+d);
    }
  }
	cout << res << endl;
}
