#include <bits/stdc++.h>
using namespace std;
char c[1010][1010];
double final;
void solve(int *d, int n, int m, int bl) {
  double area = 0;
  int last = 0;
  for (int i = (1); i <= (n); i++)
    if (d[i]) {
      if (d[i] > last)
        last = d[i], area += d[i] - 1;
      else
        last = d[i], area = d[i] - 1;
      if (bl)
        final += area * (m - d[i]) * 4;
      else
        final += (area - d[i] + 1) * (m - d[i]) * 4;
    } else
      last = 0, area = 0;
}
int line[1010], col[1010], dx[1010], dy[1010];
void lemon() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = (1); i <= (n); i++) scanf("%s", c[i] + 1);
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (m); j++)
      if (c[i][j] == 'X') line[i] = j;
  for (int i = (1); i <= (m); i++)
    for (int j = (1); j <= (n); j++)
      if (c[j][i] == 'X') col[i] = j;
  solve(line, n, m, 1);
  for (int i = (1); i <= (n); i++)
    if (line[i]) line[i] = m + 1 - line[i];
  solve(line, n, m, 0);
  for (int i = (1); i <= (n); i++)
    if (line[i]) line[i] = m + 1 - line[i];
  solve(col, m, n, 1);
  for (int i = (1); i <= (m); i++)
    if (col[i]) col[i] = n + 1 - col[i];
  solve(col, m, n, 0);
  for (int i = (1); i <= (m); i++)
    if (col[i]) col[i] = n + 1 - col[i];
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (n); j++)
      final += double(abs(i - j)) * (m - (line[i] > 0)) * (m - (line[j] > 0));
  for (int i = (1); i <= (m); i++)
    for (int j = (1); j <= (m); j++)
      final += double(abs(i - j)) * (n - (col[i] > 0)) * (n - (col[j] > 0));
  int oc = 0;
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (m); j++)
      if (c[i][j] == 'X') oc++;
  final /= (n * m - oc);
  final /= (n * m - oc);
  printf("%.16lf\n", final);
}
int main() {
  ios::sync_with_stdio(true);
  lemon();
  return 0;
}
