#include <bits/stdc++.h>

using namespace std;

using int64 = long long;

vector< string > rot(vector< string > &s) {
  vector< string > t(s[0].size(), string(s.size(), '*'));
  for(int i = 0; i < s.size(); i++) {
    for(int j = 0; j < s[i].size(); j++) {
      t[j][i] = s[i][s[i].size() - j - 1];
    }
  }
  return t;
}

int main() {
  int H, W;
  cin >> H >> W;
  vector< string > S(H);
  for(int i = 0; i < H; i++) {
    cin >> S[i];
  }

  int64 ret = 0;
  for(int i = 0; i < 4; i++) {
    S = rot(S);
    vector< int > st[600];
    for(int j = 0; j < S.size(); j++) {
      for(int k = 0; k < S[j].size(); k++) {
        if(S[j][k] == '#') st[j + k].emplace_back(j - k);
      }
    }
    for(int j = 0; j < 600; j++) {
      sort(begin(st[j]), end(st[j]));
    }
    for(int j = 0; j < 600; j++) {
      for(int k = 0; k < st[j].size(); k++) {
        for(int l = k + 1; l < st[j].size(); l++) {
          auto d = st[j][l] - st[j][k];
          if(j + d >= 600) continue;
          auto &it = st[j + d];
          ret += lower_bound(begin(it), end(it), st[j][l]) - lower_bound(begin(it), end(it), st[j][k]);
        }
      }
    }
  }
  cout << ret << endl;
}