#include <bits/stdc++.h>
using namespace std;
struct More {
  int pos;
  long long sum;
  void clear() {
    pos = 1000000000;
    sum = 0;
  }
} col[1010], row[1010];
char mp[1010][1010], tmp[1010][1010];
;
int n, m;
long long dtot;
long long tree[1010][2];
long long dist_tot;
void rotate() {
  dtot = n * m;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      tmp[i][j] = mp[i][j];
      dtot -= mp[i][j] == 'X';
    }
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) mp[m - j - 1][i] = tmp[i][j];
  swap(n, m);
}
void pre_cal() {
  for (int i = 0; i < n; ++i) row[i].clear();
  for (int j = 0; j < m; ++j) col[j].clear();
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (mp[i][j] == 'X') {
        row[i].pos = j;
        row[i].sum = j + ((i > 0 && row[i - 1].pos < j) ? row[i - 1].sum : 0);
        break;
      }
  for (int j = 0; j < m; ++j)
    for (int i = 0; i < n; ++i)
      if (mp[i][j] == 'X') {
        col[j].pos = i;
        col[j].sum = i + ((j > 0 && col[j - 1].pos < i) ? col[j - 1].sum : 0);
        break;
      }
}
long long x_cal(int pos, int d) {
  long long now = 0;
  for (; 0 < pos; pos -= pos & -pos) now += tree[pos][d];
  return now;
}
void x_ins(int pos, int add) {
  for (; pos < 1010; pos += pos & -pos) ++tree[pos][0], tree[pos][1] += add;
}
void dist_cal() {
  memset(tree, 0, sizeof(tree));
  for (int j = 0; j < m; ++j)
    for (int i = 0; i < n; ++i) {
      if (mp[i][j] == 'X') {
        x_ins(i + 1, i + j);
        continue;
      }
      dist_tot +=
          (long long)j * (j + 1) / 2 * i + (long long)i * (i + 1) / 2 * (j + 1);
      dist_tot -= (i + j) * x_cal(i, 0) - x_cal(i, 1);
      if (i > 0 && row[i].pos < j && row[i - 1].pos < row[i].pos)
        dist_tot += 2 * row[i - 1].sum;
      if (col[j].pos < i) dist_tot += 2 * col[j].sum;
    }
}
void solve() {
  dist_tot = 0;
  pre_cal();
  dist_cal();
  rotate();
  pre_cal();
  dist_cal();
  printf("%.12lf\n", 2.0 * dist_tot / ((double)dtot * dtot));
}
void init() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; ++i) scanf("%s", mp[i]);
}
int main() {
  init();
  solve();
  return 0;
}
