#include <bits/stdc++.h>
using namespace std;
const long long int E = 1e18 + 7;
const long long int MOD = 1000000007;
int main() {
  long long int h, w;
  cin >> h >> w;
  vector<vector<char>> A(h, vector<char>(w));
  for (int i = 0; i < h; i++) {
    for (int t = 0; t < w; t++) {
      cin >> A[i][t];
      A[i][t] = A[i][t] == '#' ? 1 : 0;
    }
  }
  vector<vector<vector<long long int>>> count(
      2, vector<vector<long long int>>(h + w, vector<long long int>(h + w, 0)));
  for (int i = 0; i < h; i++) {
    for (int t = 0; t < w; t++) {
      if (A[i][t] == '#') {
        count[0][i + t][t]++;
      }
    }
  }
  for (int i = 0; i < h; i++) {
    for (int t = 0; t < w; t++) {
      if (A[i][t]) {
        count[1][w - t + i - 1][i]++;
      }
    }
  }
  for (int i = 0; i < count[0].size(); i++) {
    for (int t = 1; t < count[0][i].size(); t++) {
      count[0][i][t] += count[0][i][t - 1];
    }
  }
  for (int i = 0; i < count[1].size(); i++) {
    for (int t = 1; t < count[1][i].size(); t++) {
      count[1][i][t] += count[1][i][t - 1];
    }
  }
  long long int ans = 0;
  for (int i = 1; i + 1 < h; i++) {
    for (int t = 1; t + 1 < w; t++) {
      if (!A[i][t]) {
        continue;
      }
      for (int j = 1; j < h + w; j++) {
        if (i + j < h && t - j >= 0 && i - j >= 0 && A[i][t - j] &&
            A[i - j][t] && A[i + j][t]) {
          ans++;
        }
        if (t + j < w && t - j >= 0 && i - j >= 0 && A[i][t - j] &&
            A[i - j][t] && A[i][t + j]) {
          ans++;
        }
        if (i + j < h && t + j < w && i - j >= 0 && A[i - j][t] &&
            A[i + j][t] && A[i][t + j]) {
          ans++;
        }
        if (i + j < h && t + j < w && t - j >= 0 && A[i][t - j] &&
            A[i + j][t] && A[i][t + j]) {
          ans++;
        }
        if (i + t - j >= 0 && i + j < h && t + j < w && A[i + j][t] &&
            A[i][t + j]) {
          ans += count[0][i + t - j][t - 1] -
                 (t - j >= 0 ? count[0][i + t - j][t - j] : 0);
        }
        if (i + t + j < h + w && i - j >= 0 && t - j >= 0 && A[i - j][t] &&
            A[i][t - j]) {
          ans += (t + j - 1 < h + w ? count[0][i + t + j][t + j - 1]
                                    : count[0][i + t + j][h + w - 1]) -
                 count[0][i + t + j][t];
        }
        if (w - t + i - 1 - j >= 0 && i + j < h && t - j >= 0 && A[i + j][t] &&
            A[i][t - j]) {
          ans += count[1][w - t + i - 1 - j][i - 1] -
                 (i - j >= 0 ? count[1][w - t + i - 1 - j][i - j] : 0);
        }
        if (w - t + i - 1 + j < h + w && i - j >= 0 && t + j < w &&
            A[i - j][t] && A[i][t + j]) {
          ans += (i + j + 1 < h + w ? count[1][w - t + i - 1 + j][i + j - 1]
                                    : count[1][w - t + i - 1 + j][h + w - 1]) -
                 count[1][w - t + i - 1 + j][i];
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}
