#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-12;
const long long SZ = 55, SSZ = 21, APB = 52, one = 11;
const long long INF = 0x7f7f7f7f, mod = 1000000007;
long long n, m;
char ch[SZ][SSZ];
bool vst[1LL << 20], ok[1LL << 20];
vector<long long> vct;
long long core[1LL << 20], same[SZ][SSZ];
double dp[1LL << 20];
long long last[1LL << 20], num[1LL << 20], fix[1LL << 20];
void init() {
  cin >> n;
  if (n == 1) {
    cout << 0 << endl;
    return;
  }
  double res = 0;
  for (long long i = 0; i < n; ++i) cin >> ch[i];
  m = strlen(ch[0]);
  for (long long i = 0; i < n; ++i) {
    for (long long j = 0; j < m; ++j) {
      for (long long k = 0; k < n; ++k) {
        if (ch[i][j] == ch[k][j]) {
          same[i][j] |= 1LL << k;
        }
      }
    }
  }
  for (long long i = 1; i < (1LL << m); ++i) {
    last[i] = __builtin_ctz(i);
    num[i] = __builtin_popcount(i);
  }
  for (long long i = 0; i < n; ++i) {
    core[0] = (1LL << n) - 1;
    for (long long j = 1; j < (1LL << m); ++j) {
      long long pos = last[j];
      core[j] = core[j ^ (1LL << pos)] & same[i][pos];
      if (__builtin_popcountll(core[j]) == 1) {
        fix[j] |= 1LL << i;
      }
    }
  }
  dp[0] = 1;
  for (long long i = 0; i < (1LL << m) - 1; ++i) {
    double psb = dp[i] / num[((1LL << m) - 1) ^ i];
    for (long long j = 0; j < m; ++j) {
      if (!(i & (1LL << j))) {
        dp[i ^ (1LL << j)] += psb;
        res += psb * __builtin_popcountll(fix[i ^ (1LL << j)] ^ fix[i]) *
               num[i ^ (1LL << j)];
      }
    }
  }
  res /= n;
  cout << fixed << setprecision(10) << res << endl;
}
void work() {}
int main() {
  std::ios::sync_with_stdio(0);
  int casenum;
  {
    init();
    work();
  }
  return 0;
}
