#include <bits/stdc++.h>
using namespace std;
const int maxn = 1009;
int cntL[maxn][maxn], cntR[maxn][maxn], p[maxn], q[maxn];
long double sumL[maxn][maxn], sumR[maxn][maxn];
char s[maxn][maxn];
int n, m, last, sum, sum2;
long double tot;
int main() {
  scanf("%d%d", &n, &m);
  for (int i = (1); i <= int(n); i++) scanf("%s", s[i] + 1);
  for (int i = (1); i <= int(n); i++) {
    for (int j = (1); j <= int(m); j++) {
      cntL[i][j] = cntL[i - 1][j] + cntL[i][j - 1] - cntL[i - 1][j - 1] +
                   (s[i][j] == '.');
      sumL[i][j] = sumL[i - 1][j] + sumL[i][j - 1] - sumL[i - 1][j - 1] +
                   (s[i][j] == '.') * (i + j);
      if (s[i][j] == '.')
        tot += (long double)cntL[i][j - 1] * (i + j) - sumL[i][j - 1];
    }
    for (int j = (m); j >= int(1); j--) {
      cntR[i][j] = cntR[i - 1][j] + cntR[i][j + 1] - cntR[i - 1][j + 1] +
                   (s[i][j] == '.');
      sumR[i][j] = sumR[i - 1][j] + sumR[i][j + 1] - sumR[i - 1][j + 1] +
                   (s[i][j] == '.') * (i + m + 1 - j);
      if (s[i][j] == '.')
        tot += (long double)cntR[i - 1][j] * (i + m + 1 - j) - sumR[i - 1][j];
    }
  }
  tot *= 2;
  for (int i = (1); i <= int(n); i++)
    for (int j = (1); j <= int(m); j++)
      if (s[i][j] == 'X') p[i] = j;
  for (int i = (1); i <= int(m); i++)
    for (int j = (1); j <= int(n); j++)
      if (s[j][i] == 'X') q[i] = j;
  last = 0;
  for (int i = (1); i <= int(n); i++)
    if (p[i]) {
      if (!last || p[i] < p[i - 1]) {
        last = i;
        sum = 0;
      }
      sum += p[i] - 1;
      tot += (long double)4.0 * (m - p[i]) * sum;
    } else
      last = 0;
  last = 0;
  for (int i = (1); i <= int(n); i++)
    if (p[i]) {
      if (!last || p[i] > p[i - 1]) {
        last = i;
        sum = 0;
      }
      tot += (long double)4.0 * (p[i] - 1) * sum;
      sum += m - p[i];
    } else
      last = 0;
  last = 0;
  for (int i = (1); i <= int(m); i++)
    if (q[i]) {
      if (!last || q[i] < q[i - 1]) {
        last = i;
        sum = 0;
      }
      sum += q[i] - 1;
      tot += (long double)4.0 * (n - q[i]) * sum;
    } else
      last = 0;
  last = 0;
  for (int i = (1); i <= int(m); i++)
    if (q[i]) {
      if (!last || q[i] > q[i - 1]) {
        last = i;
        sum = 0;
      }
      tot += (long double)4.0 * (q[i] - 1) * sum;
      sum += n - q[i];
    } else
      last = 0;
  long double ans = tot / cntL[n][m] / cntL[n][m];
  printf("%.12Lf\n", ans);
  return 0;
}
