#include <bits/stdc++.h>
using namespace std;
long long int nCr(long long int n, long long int r) {
  r = min(r, n - r);
  if (r < 0) return 0;
  if (r == 0) return 1;
  long long int ans = 1;
  for (long long int i = 1; i <= r; i++) {
    ans = ans * (n - i + 1) / i;
  }
  return ans;
}
long long int logn(int val, int base) {
  return (val > base - 1) ? 1 + logn(val / base, base) : 0;
}
long long int power(long long int a, long long int b) {
  if (b == 1) return a;
  if (b == 0) return 1;
  long long int m1 = power(a, b / 2);
  if (b % 2) return m1 * m1 * a;
  return m1 * m1;
}
bool isprime(long long int a) {
  if (a <= 1) return false;
  if (a == 2 || a == 3) return true;
  if (a % 2 == 0 || a % 3 == 0) return false;
  for (long long int i = 5; i * i <= a; i = i + 6) {
    if (a % i == 0 || a % (i + 2) == 0) return false;
  }
  return true;
}
long long int n, m;
bool check(int i, int j) {
  if (i >= 0 && i < n && j < m && j >= 0) return true;
  return false;
}
void solve() {
  cin >> n >> m;
  vector<string> a(n);
  for (long long int i = 0; i < n; i++) cin >> a[i];
  pair<int, int> p;
  int b = 0;
  for (long long int i = 0; i < n; i++) {
    for (long long int j = 0; j < m; j++) {
      if (a[i][j] == '*') {
        long long int f = 0;
        if (check(i + 1, j) && a[i + 1][j] == '*') {
          f = 1;
        } else {
          f = 0;
        }
        if (check(i - 1, j) && a[i - 1][j] == '*') {
          f &= 1;
        } else {
          f = 0;
        }
        if (check(i, j - 1) && a[i][j - 1] == '*') {
          f &= 1;
        } else {
          f = 0;
        }
        if (check(i, j + 1) && a[i][j + 1] == '*') {
          f &= 1;
        } else {
          f = 0;
        }
        if (f == 1) {
          p = {i, j};
          b = 1;
          break;
        }
      }
    }
    if (b == 1) {
      break;
    }
  }
  map<pair<int, int>, bool> mp;
  for (long long int i = 0; i < n; i++) {
    if (a[i][p.second] == '*') {
      for (long long int j = i; j < n; j++) {
        if (a[j][p.second] == '*')
          mp[{j, p.second}] = 1;
        else {
          break;
        }
      }
      break;
    }
  }
  if (b == 0) {
    cout << "NO" << endl;
    return;
  }
  for (long long int j = 0; j < m; j++) {
    if (a[p.first][j] == '*') {
      for (long long int i = j; i < m; i++) {
        if (a[p.first][i] == '*')
          mp[{p.first, i}] = 1;
        else
          break;
      }
      break;
    }
  }
  for (long long int i = 0; i < n; i++) {
    for (long long int j = 0; j < m; j++) {
      if (a[i][j] == '*') {
        if (mp.find({i, j}) == mp.end()) {
          cout << "NO" << endl;
          return;
        }
      }
    }
  }
  cout << "YES" << endl;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(0);
  long long int t;
  t = 1;
  for (int i = 1; i <= t; i++) {
    solve();
  }
  return 0;
}
