#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1e9 + 7;
const int N = 300;
vector<vector<int> > trans(const vector<vector<int> > &a) {
  vector<vector<int> > ret(N, vector<int>(N));
  for (int i = (int)(0); i < (int)(N); i++)
    for (int j = (int)(0); j < (int)(N); j++) ret[i][j] = a[j][i];
  return ret;
}
long long int calc(const vector<vector<int> > &sig) {
  long long int tot = 0;
  vector<vector<int> > acc(N, vector<int>(N + 1, 0));
  for (int i = (int)(0); i < (int)(N); i++) {
    for (int j = (int)(0); j < (int)(N); j++) {
      acc[i][j + 1] = acc[i][j] + sig[i][j];
    }
  }
  for (int i = (int)(0); i < (int)(N); i++) {
    for (int j = (int)(0); j < (int)(N); j++) {
      if (sig[i][j] == 0) continue;
      for (int k = (int)(j + 1); k < (int)(N); k++) {
        if (sig[i][k] == 0) continue;
        int dif = k - j;
        if (i - dif >= 0) {
          int idx = i - dif;
          tot += 2 * (acc[idx][k + 1] - acc[idx][j]);
          if (sig[i - dif][j] == 1) tot--;
          if (sig[i - dif][k] == 1) tot--;
        }
        if (i + dif < N) {
          int idx = i + dif;
          tot += 2 * (acc[idx][k + 1] - acc[idx][j]);
          if (sig[i + dif][j] == 1) tot--;
          if (sig[i + dif][k] == 1) tot--;
        }
      }
    }
  }
  return tot;
}
int main(void) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int h, w;
  cin >> h >> w;
  vector<string> s(h);
  for (int i = (int)(0); i < (int)(h); i++) cin >> s[i];
  long long int tot = 0;
  for (int par = (int)(0); par < (int)(2); par++) {
    vector<vector<int> > sig(N, vector<int>(N, 0));
    for (int i = (int)(0); i < (int)(h); i++) {
      for (int j = (int)(0); j < (int)(w); j++) {
        if (s[i][j] == '.') continue;
        if ((i + j) % 2 == par) {
          int x = (i + j - par) / 2;
          int y = (i - j - par) / 2 + w;
          sig[x][y] = 1;
        }
      }
    }
    tot += calc(sig);
    sig = trans(sig);
    tot += calc(sig);
  }
  cout << tot / 2 << endl;
}
