#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
char mde[N][N];
long long tot;
int n;
int m;
int lf[N];
int rt[N];
long long f[N][N];
long long fs[N];
int x[N];
int y[N];
int tp;
char tr[N][N];
inline int mabs(int x, int y) { return (x < y) ? y - x : x - y; }
inline void subsolve(int* len1, int* len2) {
  for (int i = 1, ns = 0; i <= n; i++) {
    if (len1[i] == -1) continue;
    if (len1[i - 1] == -1 || len1[i] < len1[i - 1]) ns = 0;
    tot += (long long)2 * ns * len2[i];
    tot += (long long)len1[i] * len2[i];
    ns += len1[i];
  }
}
inline void solve() {
  for (int i = 1; i <= n; i++) {
    lf[i] = rt[i] = -1;
    for (int j = 1; j <= m; j++)
      if (mde[i][j] == 'X') {
        lf[i] = j - 1, rt[i] = m - j;
        break;
      }
  }
  subsolve(lf, rt);
  subsolve(rt, lf);
}
inline void rvs() {
  for (int i = 1; i <= n / 2; i++)
    for (int j = 1; j <= m; j++) swap(mde[i][j], mde[n - i + 1][j]);
}
int main() {
  for (int i = 1; i <= 1000; i++)
    for (int j = 1; j <= 1000; j++) f[i][j] = (i + j) - 2;
  for (int i = 1; i <= 1000; i++)
    for (int j = 1; j <= 1000; j++)
      f[i][j] += f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1];
  for (int i = 1; i <= 1000; i++) fs[i] = i - 1;
  for (int i = 1; i <= 1000; i++) fs[i] += fs[i - 1];
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%s", mde[i] + 1);
  for (int i = 1, ri = n; i <= n; i++, ri--)
    for (int j = 1, rj = m; j <= m; j++, rj--) {
      long long dis = f[i][j] + f[i][rj] + f[ri][j] + f[ri][rj] - fs[i] -
                      fs[j] - fs[ri] - fs[rj];
      if (mde[i][j] == '.')
        tot += dis;
      else
        x[++tp] = i, y[tp] = j, tot -= dis;
    }
  for (int i = 1; i <= tp; i++)
    for (int j = 1; j <= tp; j++) tot += (mabs(x[i], x[j]) + mabs(y[i], y[j]));
  solve();
  rvs();
  solve();
  rvs();
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) tr[j][i] = mde[i][j];
  swap(n, m);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) mde[i][j] = tr[i][j];
  solve();
  rvs();
  solve();
  long long fz = ((long long)n * m - tp) * ((long long)n * m - tp);
  printf("%.10lf", (double)tot / fz);
  return 0;
}
