#include <bits/stdc++.h>
using namespace std;
bool dp[10][16][500][500];
int n, m;
string s[505];
bool f[505][505];
int cnt;
bool t[16][2][2];
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
    for (int j = 0; j < m; j++) {
      f[i][j] = s[i][j] == '*';
    }
  }
  for (int i = 0; i < 16; i++) {
    for (int j = 0; j < 2; j++) {
      for (int k = 0; k < 2; k++) {
        t[i][j][k] = ((i >> (2 * j + k)) & 1);
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      dp[0][15][i][j] = f[i][j];
      for (int k = 0; k < 15; k++) {
        dp[0][k][i][j] = !f[i][j];
      }
    }
  }
  for (int sz = 1, p = 1; sz < min(n, m); sz *= 2, p++) {
    for (int i = 0; i <= n - sz * 2; i++) {
      for (int j = 0; j <= m - sz * 2; j++) {
        for (int k = 0; k < 16; k++) {
          bool ok = true;
          for (int y = 0; y < 2; y++) {
            for (int x = 0; x < 2; x++) {
              if (t[k][y][x] && !dp[p - 1][15][i + sz * y][j + sz * x])
                ok = false;
              if (!t[k][y][x] && !dp[p - 1][k][i + sz * y][j + sz * x])
                ok = false;
            }
          }
          dp[p][k][i][j] = ok;
          if (ok && sz > 1) {
            cnt++;
          }
        }
      }
    }
  }
  cout << cnt;
  return 0;
}
