#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
int row[maxn], col[maxn], n, m;
long long ans, cnt;
char s[maxn][maxn];
void solve(int k, int *z) {
  int sum = n + m - k;
  for (int a = 1; a <= k; a++)
    if (z[a]) {
      ans += 4 * (z[a] - 1) * (sum - z[a]);
      for (int b = a - 1; b >= 1; b--)
        if (z[b] && z[b] > z[b + 1])
          ans += 4 * (z[a] - 1) * (sum - z[b]);
        else
          break;
      for (int b = a + 1; b <= k; b++)
        if (z[b] && z[b] > z[b - 1])
          ans += 4 * (z[a] - 1) * (sum - z[b]);
        else
          break;
    }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int a = 1; a <= n; a++) scanf("%s", s[a] + 1);
  for (int a = 1; a <= n; a++)
    for (int b = 1; b <= m; b++)
      if (s[a][b] == 'X') {
        row[a] = b;
        col[b] = a;
        cnt++;
      } else
        ans += n * b * (b - 1) / 2 + n * (m - b + 1) * (m - b) / 2 +
               m * a * (a - 1) / 2 + m * (n - a + 1) * (n - a) / 2;
  cnt = (n * m - cnt) * (n * m - cnt);
  for (int a = 1; a <= n; a++)
    if (row[a]) {
      ans -= n * row[a] * (row[a] - 1) / 2 +
             n * (m - row[a] + 1) * (m - row[a]) / 2;
      for (int b = 1; b <= n; b++)
        if (a != b) {
          ans -= m * abs(a - b);
          if (row[b]) ans += abs(a - b) + abs(row[a] - row[b]);
        }
    }
  solve(n, row);
  solve(m, col);
  printf("%.9lf\n", (double)ans / cnt);
  return 0;
}
