#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3010;
long long int rj = 0;
int n, m;
char mat[MAXN][MAXN];
int lijevo[MAXN][MAXN], desno[MAXN][MAXN];
int FWT[MAXN], treba[MAXN];
set<int> za_izbaciti[MAXN];
void ubaci(int x, int v) {
  for (++x; x > 0; x -= x & -x) FWT[x] += v;
}
int upit(int x) {
  int ret = 0;
  for (++x; x < MAXN; x += x & -x) ret += FWT[x];
  return ret;
}
void slozi() {
  for (int i = 0; i < n; i++) {
    if (mat[i][0] == 'z') lijevo[i][0] = 1;
    for (int j = 1; j < m; j++)
      if (mat[i][j] == 'z') lijevo[i][j] = lijevo[i][j - 1] + 1;
    if (mat[i][m - 1] == 'z') desno[i][m - 1] = 1;
    for (int j = m - 2; j >= 0; j--)
      if (mat[i][j] == 'z') desno[i][j] = desno[i][j + 1] + 1;
  }
}
void rijesi(int x, int y) {
  pair<int, int> it = pair<int, int>(x, y);
  for (int i = x, j = y; i < n && j >= 0; i++, j--) {
    if (mat[i][j] == '.') {
      while (it.first <= i) {
        if (it.first + lijevo[it.first][it.second] < n)
          if (za_izbaciti[it.first + lijevo[it.first][it.second]].find(
                  it.first) !=
              za_izbaciti[it.first + lijevo[it.first][it.second]].end()) {
            za_izbaciti[it.first + lijevo[it.first][it.second]].erase(
                za_izbaciti[it.first + lijevo[it.first][it.second]].find(
                    it.first));
            ubaci(it.first, -1);
            treba[it.first] = 0;
          }
        if (treba[it.first]) {
          ubaci(it.first, -1);
          treba[it.first] = 0;
        }
        it.first++;
        it.second--;
      }
      continue;
    }
    while (!za_izbaciti[i].empty()) {
      int x = *za_izbaciti[i].begin();
      za_izbaciti[i].erase(za_izbaciti[i].begin());
      ubaci(x, -1);
      treba[x] = 0;
    }
    if (i + lijevo[i][j] < n) za_izbaciti[i + lijevo[i][j]].insert(i);
    ubaci(i, 1);
    treba[i] = 1;
    rj += (long long int)upit(max(0, i - desno[i][j] + 1));
  }
  memset(FWT, 0, sizeof(FWT));
  for (int i = 0; i < n; i++) za_izbaciti[i].clear();
  memset(treba, 0, sizeof(treba));
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) scanf("%s", mat[i]);
  slozi();
  for (int i = 0; i < m; i++) rijesi(0, i);
  for (int i = 1; i < n; i++) rijesi(i, m - 1);
  cout << rj << endl;
  return 0;
}
