#include <bits/stdc++.h>
using namespace std;
int n, m;
char buff[501];
bool br[501][501];
bool aux[501][501];
int sum[501][501];
bool pt[2][2];
int sumd(int i, int j, int d) {
  return sum[i + d - 1][j + d - 1] - sum[i + d - 1][j - 1] -
         sum[i - 1][j + d - 1] + sum[i - 1][j - 1];
}
int count() {
  memset(sum, 0, sizeof sum);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) {
      sum[i][j] = br[i][j] + sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
    }
  bool fr[501][501], qf[501][501];
  memcpy(fr, br, sizeof br);
  int ans = 0;
  for (int d = 1, mx = min(n, m); (d << 1) <= mx; d <<= 1) {
    memset(qf, 0, sizeof qf);
    for (int i = 1, mi = n - (d << 1) + 1; i <= mi; ++i)
      for (int j = 1, mj = m - (d << 1) + 1; j <= mj; ++j) {
        bool ok = 1;
        for (int k = 0; k < 2 && ok; ++k)
          for (int l = 0; l < 2 && ok; ++l) {
            if (pt[k][l])
              ok &= fr[i + k * d][j + l * d];
            else
              ok &= sumd(i + k * d, j + l * d, d) == 0;
          }
        qf[i][j] = ok;
        if (ok && d > 1) ans += qf[i][j];
      }
    memcpy(fr, qf, sizeof qf);
  }
  return ans;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) {
    scanf("%s", buff);
    for (int j = 1; j <= m; ++j) br[i][j] = buff[j - 1] == '.';
  }
  int ans = 0;
  for (int i = 0; i < 16; ++i) {
    for (int j = 0, c = 0; j < 2; ++j)
      for (int k = 0; k < 2; ++k, ++c) pt[j][k] = (i & (1 << c)) > 0;
    ans += count();
  }
  printf("%d\n", ans);
  return 0;
}
