#include <bits/stdc++.h>
using namespace std;
inline long long ri() {
  long long x;
  scanf("%lld", &x);
  return x;
}
template <typename T>
inline bool smax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
inline bool smin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
int n, m;
char s[400][400];
char _s[400][400];
inline int get(int x, int y) {
  return x >= 0 && x < n && y >= 0 && y < m && s[x][y] == '#';
}
inline int get(const pair<int, int>& a) { return get(a.first, a.second); }
long long res = 0;
void rotate() {
  for (int i = 0; i < (n); i++) {
    for (int j = 0; j < (m); j++) {
      _s[j][i] = s[n - 1 - i][j];
    }
  }
  swap(n, m);
  for (int i = 0; i < (n); i++) {
    for (int j = 0; j < (m); j++) {
      s[i][j] = _s[i][j];
    }
  }
}
inline int sign(int x) { return x == 0 ? 0 : (x > 0 ? 1 : -1); }
inline pair<int, int> diff(pair<int, int>& a, pair<int, int>& b) {
  return pair<int, int>(sign(b.first - a.first), sign(b.second - a.second));
}
inline void add(pair<int, int>& a, pair<int, int>& b) {
  a.first += b.first;
  a.second += b.second;
}
void solve() {
  for (int s = 0; s < n + m - 1; s++) {
    int max_d = min(s, n - 1) - max(s - m + 1, 0);
    for (int d = 1; d <= max_d; d++) {
      pair<int, int> last_1, last_2;
      int cnt = 0;
      bool init = false;
      for (int i = max(s - m + 1, 0); i + d <= s && i + d < n; i++) {
        pair<int, int> new_1 = {i, s - i - d - d}, new_2 = {i - d, s - i - d};
        if (init) {
          if (get(last_2)) cnt--;
          if (get(new_1)) cnt++;
        } else {
          for (pair<int, int> p = new_1, df = diff(new_1, new_2);; add(p, df)) {
            if (get(p)) cnt++;
            if (p == new_2) {
              break;
            }
          }
        }
        if (get(pair<int, int>({i, s - i})) &&
            get(pair<int, int>({i + d, s - i - d}))) {
          res += cnt * 2;
          if (get(new_1)) res--;
          if (get(new_2)) res--;
        }
        last_1 = new_1;
        last_2 = new_2;
        init = true;
      }
    }
  }
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < (n); i++) cin >> s[i];
  for (int i = 0; i < (4); i++) {
    solve();
    rotate();
  }
  cout << res / 2 << endl;
  return 0;
}
