#include <bits/stdc++.h>
using namespace std;
int n, m;
char a[1010][1010];
int pr[1010], pc[1010];
int sr[1010], sc[1010];
int r[1010], c[1010];
int tot;
long long sum;
long long ans;
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%s", a[i] + 1);
    for (int j = 1; j <= m; j++) {
      if (a[i][j] == 'X')
        pr[i] = j, pc[j] = i;
      else {
        r[i]++;
        c[j]++;
        tot++;
      }
    }
  }
  for (int i = 1; i <= n; i++) sr[i] = sr[i - 1] + m - pr[i];
  for (int i = 1; i <= m; i++) sc[i] = sc[i - 1] + n - pc[i];
  for (int i = 1; i <= n; i++) {
    if (!pr[i]) continue;
    int j = i + 1;
    while (j <= n && pr[j] > pr[j - 1]) j++;
    for (int k = i; k < j; k++) sum += (sr[j - 1] - sr[k]) * (pr[k] - 1);
    i = j - 1;
  }
  for (int i = n; i >= 1; i--) {
    if (!pr[i]) continue;
    int j = i - 1;
    while (j && pr[j] > pr[j + 1]) j--;
    for (int k = i; k > j; k--) sum += (sr[k - 1] - sr[j]) * (pr[k] - 1);
    i = j + 1;
  }
  for (int i = 1; i <= m; i++) {
    if (!pc[i]) continue;
    int j = i + 1;
    while (j <= m && pc[j] > pc[j - 1]) j++;
    for (int k = i; k < j; k++) sum += (sc[j - 1] - sc[k]) * (pc[k] - 1);
    i = j - 1;
  }
  for (int i = m; i >= 1; i--) {
    if (!pc[i]) continue;
    int j = i - 1;
    while (j && pc[j] > pc[j + 1]) j--;
    for (int k = i; k > j; k--) sum += (sc[k - 1] - sc[j]) * (pc[k] - 1);
    i = j + 1;
  }
  for (int i = 1; i <= n; i++)
    if (pr[i]) sum += 1LL * (pr[i] - 1) * (m - pr[i]);
  for (int i = 1; i <= m; i++)
    if (pc[i]) sum += 1LL * (pc[i] - 1) * (n - pc[i]);
  for (int i = 1; i <= n; i++) {
    ans += 1LL * r[i] * i * (r[i - 1] + r[i - 1] + r[i] - tot);
    r[i] += r[i - 1];
  }
  for (int i = 1; i <= m; i++) {
    ans += 1LL * c[i] * i * (c[i - 1] + c[i - 1] + c[i] - tot);
    c[i] += c[i - 1];
  }
  ans *= 2;
  ans += sum * 4;
  printf("%.7lf", (double)ans / (double)tot / (double)tot);
  return 0;
}
