#include <bits/stdc++.h>
const int N = 1000 + 10;
int n, m, cnt, r[N], x[N], y[N];
long long ans;
char s[N];
int main() {
  scanf("%d%d", &n, &m);
  cnt = n * m;
  for (int i = (int)1, _y = n; i <= _y; i++) {
    scanf("%s", s + 1);
    for (int j = (int)1, _y = m; j <= _y; j++)
      if (s[j] == 'X') x[i] = j, y[j] = i, cnt--;
  }
  for (int i = (int)1, _y = n; i <= _y; i++) r[i] = m - (x[i] != 0);
  for (int i = (int)1, _y = n; i <= _y; i++)
    for (int j = (int)i + 1, _y = n; j <= _y; j++)
      ans += 2ll * (j - i) * r[i] * r[j];
  for (int i = (int)1, _y = m; i <= _y; i++) r[i] = n - (y[i] != 0);
  for (int i = (int)1, _y = m; i <= _y; i++)
    for (int j = (int)i + 1, _y = m; j <= _y; j++)
      ans += 2ll * (j - i) * r[i] * r[j];
  for (int i = (int)1, _y = n; i <= _y; i++) {
    int t = 0;
    for (int j = (int)i, _y = n; j <= _y; j++)
      if (x[j] > t)
        ans += 4ll * (x[i] - 1) * (m - x[j]), t = x[j];
      else
        break;
  }
  for (int i = (int)1, _y = n; i <= _y; i++)
    if (x[i]) {
      int t = x[i];
      for (int j = (int)i + 1, _y = n; j <= _y; j++)
        if (x[j] && x[j] < t)
          ans += 4ll * (m - x[i]) * (x[j] - 1), t = x[j];
        else
          break;
    }
  for (int i = (int)1, _y = m; i <= _y; i++) {
    int t = 0;
    for (int j = (int)i, _y = m; j <= _y; j++)
      if (y[j] > t)
        ans += 4ll * (y[i] - 1) * (n - y[j]), t = y[j];
      else
        break;
  }
  for (int i = (int)1, _y = m; i <= _y; i++)
    if (y[i]) {
      int t = y[i];
      for (int j = (int)i + 1, _y = m; j <= _y; j++)
        if (y[j] && y[j] < t)
          ans += 4ll * (n - y[i]) * (y[j] - 1), t = y[j];
        else
          break;
    }
  printf("%.12lf\n", 1. * ans / cnt / cnt);
}
