#include <bits/stdc++.h>
using namespace std;
const long long one = 1;
const int N = 20;
const int M = 20092010;
const int maxn = 1 << 20;
long long dp[maxn + 10];
string s[N << 2];
int getbits(long long x) {
  int ans = 0;
  while (x) {
    x &= x - 1;
    ++ans;
  }
  return ans;
}
bool has(int x, int y) { return (x >> y) & 1; }
int res[N + 10];
int main() {
  ios::sync_with_stdio(false);
  int n, m, i, j, k;
  cin >> n;
  for (i = 0; i < n; ++i) {
    cin >> s[i];
  }
  m = (int)s[0].length();
  for (i = 0; i < n; ++i) {
    for (j = i + 1; j < n; ++j) {
      int same = 0;
      for (k = 0; k < m; ++k) {
        if (s[i][k] == s[j][k]) {
          same |= 1 << k;
        }
      }
      dp[same] |= one << j;
      dp[same] |= one << i;
    }
  }
  int mask = 1 << m;
  for (i = mask - 1; i >= 0; --i) {
    for (j = 0; j < m; ++j) {
      if (!has(i, j)) {
        dp[i] |= dp[i ^ (1 << j)];
      }
    }
  }
  for (i = 0; i < mask; ++i) {
    int now = getbits(i);
    for (j = 0; j < m; ++j) {
      if (!has(i, j)) {
        int s = getbits(dp[i] ^ dp[i ^ (1 << j)]);
        res[now] += s;
      }
    }
  }
  double ans = 0;
  for (i = 0; i < m; ++i) {
    double tmp = (1.0 * res[i]) / (m - i);
    for (j = 0; j < i; ++j) {
      tmp *= (i - j);
      tmp /= (m - j);
    }
    ans += tmp * (i + 1) / n;
  }
  cout << fixed << setprecision(11) << ans << endl;
  return 0;
}
