#include <bits/stdc++.h>
using namespace std;
char a[505][505];
char c;
long long ans = 0;
int dp[502][502][9][17];
int temp;
int xc, yc;
pair<int, int> getCoor(int x, int y, int st, int pos) {
  int a = pow(2.0, (double)st);
  int xa = x, ya = y;
  if (pos == 0) {
    return make_pair(xa, ya);
  }
  if (pos == 1) {
    return make_pair(xa, ya + a);
  }
  if (pos == 2) {
    return make_pair(xa + a, ya + a);
  }
  if (pos == 3) {
    return make_pair(xa + a, ya);
  }
}
bool isIdent(int mask, int x, int y) {
  temp = mask & (1 << 0);
  if (a[x][y] == '*') {
    if (temp == 0) return 0;
  } else {
    if (temp != 0) return 0;
  }
  temp = mask & (1 << 1);
  if (a[x][y + 1] == '*') {
    if (temp == 0) return 0;
  } else {
    if (temp != 0) return 0;
  }
  temp = mask & (1 << 2);
  if (a[x + 1][y + 1] == '*') {
    if (temp == 0) return 0;
  } else {
    if (temp != 0) return 0;
  }
  temp = mask & (1 << 3);
  if (a[x + 1][y] == '*') {
    if (temp == 0) return 0;
  } else {
    if (temp != 0) return 0;
  }
  return 1;
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%1c", &c);
    scanf("%s", &a[i]);
  }
  int cur = 1;
  int b = 16;
  bool good = true;
  for (int a = 1; a < 9; a++) {
    cur *= 2;
    for (int x = 0; x <= n - cur; x++) {
      for (int y = 0; y <= m - cur; y++) {
        for (int mask = 0; mask < b; mask++) {
          if (cur == 2) {
            if (isIdent(mask, x, y)) {
              dp[x][y][a][mask] = 1;
              break;
            }
          } else {
            good = true;
            for (int i = 0; i < 4; i++) {
              temp = mask & (1 << i);
              pair<int, int> p = getCoor(x, y, a - 1, i);
              xc = p.first;
              yc = p.second;
              if (temp != 0) {
                if (!dp[xc][yc][a - 1][15]) {
                  good = false;
                  break;
                }
              } else {
                if (!dp[xc][yc][a - 1][mask]) {
                  good = false;
                  break;
                }
              }
            }
            if (good) {
              dp[x][y][a][mask] = 1;
              ans++;
              break;
            }
          }
        }
      }
    }
  }
  cout << ans;
  return 0;
}
