#include <bits/stdc++.h>
using namespace std;
int main() {
  int h, w;
  cin >> h >> w;
  vector<vector<char>> s(h, vector<char>(w));
  map<int, map<int, int>> m;
  vector<pair<int, int>> o, e, v;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      cin >> s[i][j];
      if (s[i][j] == '#') {
        m[i + j][i - j] = 1;
      } else {
        m[i + j][i - j] = 0;
      }
      if ((i + j) % 2) {
        if (s[i][j] == '#') {
          o.push_back(make_pair(i + j, i - j));
        }
      } else {
        if (s[i][j] == '#') {
          e.push_back(make_pair(i + j, i - j));
        }
      }
    }
  }
  long long sans = 0;
  long long dans = 0;
  long long tans = 0;
  v = o;
  for (int i = 0; i < v.size(); i++) {
    int fx = v[i].first;
    int fy = v[i].second;
    for (int j = i + 1; j < v.size(); j++) {
      int sx = v[j].first;
      int sy = v[j].second;
      int dx = fx - sx;
      int dy = fy - sy;
      if (dx < 0) dx *= -1;
      if (dy < 0) dy *= -1;
      if (dx == 0) {
        if (m[fx + dy][fy]) {
          tans++;
        }
        if (m[fx - dy][fy]) {
          tans++;
        }
        if (m[fx + dy][sy]) {
          tans++;
        }
        if (m[fx - dy][sy]) {
          tans++;
        }
        continue;
      }
      if (dy == 0) {
        if (m[fx][fy + dx]) {
          tans++;
        }
        if (m[fx][fy - dx]) {
          tans++;
        }
        if (m[sx][fy + dx]) {
          tans++;
        }
        if (m[sx][fy - dx]) {
          tans++;
        }
        continue;
      }
      if (dx > dy) {
        if (fy > sy) {
          if (m[fx][fy - dx]) {
            dans++;
          }
          if (m[sx][sy + dx]) {
            dans++;
          }
        } else {
          if (m[fx][fy + dx]) {
            dans++;
          }
          if (m[sx][sy - dx]) {
            dans++;
          }
        }
      } else if (dx < dy) {
        if (fx > sx) {
          if (m[fx - dy][fy]) {
            dans++;
          }
          if (m[sx + dy][sy]) {
            dans++;
          }
        } else {
          if (m[fx + dy][fy]) {
            dans++;
          }
          if (m[sx - dy][sy]) {
            dans++;
          }
        }
      } else {
        if (fx > sx) {
          if (m[fx - dy][fy]) {
            tans++;
          }
          if (m[sx + dy][sy]) {
            tans++;
          }
        } else {
          if (m[fx + dy][fy]) {
            tans++;
          }
          if (m[sx - dy][sy]) {
            tans++;
          }
        }
      }
    }
  }
  v = e;
  for (int i = 0; i < v.size(); i++) {
    int fx = v[i].first;
    int fy = v[i].second;
    for (int j = i + 1; j < v.size(); j++) {
      int sx = v[j].first;
      int sy = v[j].second;
      int dx = fx - sx;
      int dy = fy - sy;
      if (dx < 0) dx *= -1;
      if (dy < 0) dy *= -1;
      if (dx == 0) {
        if (m[fx + dy][fy]) {
          tans++;
        }
        if (m[fx - dy][fy]) {
          tans++;
        }
        if (m[fx + dy][sy]) {
          tans++;
        }
        if (m[fx - dy][sy]) {
          tans++;
        }
        continue;
      }
      if (dy == 0) {
        if (m[fx][fy + dx]) {
          tans++;
        }
        if (m[fx][fy - dx]) {
          tans++;
        }
        if (m[sx][fy + dx]) {
          tans++;
        }
        if (m[sx][fy - dx]) {
          tans++;
        }
        continue;
      }
      if (dx > dy) {
        if (fy > sy) {
          if (m[fx][fy - dx]) {
            dans++;
          }
          if (m[sx][sy + dx]) {
            dans++;
          }
        } else {
          if (m[fx][fy + dx]) {
            dans++;
          }
          if (m[sx][sy - dx]) {
            dans++;
          }
        }
      } else if (dx < dy) {
        if (fx > sx) {
          if (m[fx - dy][fy]) {
            dans++;
          }
          if (m[sx + dy][sy]) {
            dans++;
          }
        } else {
          if (m[fx + dy][fy]) {
            dans++;
          }
          if (m[sx - dy][sy]) {
            dans++;
          }
        }
      } else {
        if (fx > sx) {
          if (m[fx - dy][fy]) {
            tans++;
          }
          if (m[sx + dy][sy]) {
            tans++;
          }
        } else {
          if (m[fx + dy][fy]) {
            tans++;
          }
          if (m[sx - dy][sy]) {
            tans++;
          }
        }
      }
    }
  }
  dans /= 2;
  tans /= 3;
  cout << sans + dans + tans << endl;
  return 0;
}
