#include <bits/stdc++.h>
using namespace std;
int m, n, sum[1000][1000];
int black(int i, int j, int k) {
  int s = sum[i + k - 1][j + k - 1] - sum[i + k - 1][j - 1] -
          sum[i - 1][j + k - 1] + sum[i - 1][j - 1];
  return (s == k * k);
}
int white(int i, int j, int k) {
  int s = sum[i + k - 1][j + k - 1] - sum[i + k - 1][j - 1] -
          sum[i - 1][j + k - 1] + sum[i - 1][j - 1];
  return (s == 0);
}
int check(int i, int j, int k, int s) {
  if (s == 0 && white(i, j, k)) return 1;
  if (k == 1) {
    if (black(i, j, 1) == 0) return 1;
    return 0;
  }
  if (!black(i, j, k / 2) && (s & 1)) return 0;
  if (!black(i + k / 2, j, k / 2) && (s & 2)) return 0;
  if (!black(i, j + k / 2, k / 2) && (s & 4)) return 0;
  if (!black(i + k / 2, j + k / 2, k / 2) && (s & 8)) return 0;
  if (!(s & 1) && !check(i, j, k / 2, s)) return 0;
  if (!(s & 2) && !check(i + k / 2, j, k / 2, s)) return 0;
  if (!(s & 4) && !check(i, j + k / 2, k / 2, s)) return 0;
  if (!(s & 8) && !check(i + k / 2, j + k / 2, k / 2, s)) return 0;
  return 1;
}
int main() {
  cin >> m >> n;
  memset(sum, 0, sizeof(sum));
  for (int i = (1); i <= (m); i++)
    for (int j = (1); j <= (n); j++) {
      char c = 'i';
      while (c != '.' && c != '*') scanf("%c", &c);
      sum[i][j] =
          (c == '*') + sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
    }
  int res = 0;
  for (int i = (1); i <= (m); i++)
    for (int j = (1); j <= (n); j++) {
      int k = 2;
      while (k <= (min(m - i, n - j) + 1) / 2) {
        int s = 0;
        if (black(i, j, k)) s |= 1;
        if (black(i + k, j, k)) s |= 2;
        if (black(i, j + k, k)) s |= 4;
        if (black(i + k, j + k, k)) s |= 8;
        res += (check(i, j, k * 2, s));
        k *= 2;
      }
    }
  cout << res;
}
