#include <bits/stdc++.h>
using namespace std;
const long long inf = 2147383647;
const double pi = 2 * acos(0.0);
const double eps = 1e-9;
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
inline long long gcd(long long a, long long b) {
  a = ((a) < 0 ? -(a) : (a));
  b = ((b) < 0 ? -(b) : (b));
  while (b) {
    a = a % b;
    swap(a, b);
  }
  return a;
}
int ext_gcd(int a, int b, int& x, int& y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  int x1, y1;
  int d = ext_gcd(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
inline long long modInv(int a, int m) {
  int x, y;
  ext_gcd(a, m, x, y);
  if (x < 0) x += m;
  return x;
}
inline long long power(long long a, long long p) {
  long long res = 1, x = a;
  while (p) {
    if (p & 1) res = (res * x);
    x = (x * x);
    p >>= 1;
  }
  return res;
}
inline long long bigmod(long long a, long long p, long long m) {
  long long res = 1, x = a % m;
  while (p) {
    if (p & 1) res = (res * x) % m;
    x = (x * x) % m;
    p >>= 1;
  }
  return res;
}
char buf[60][30];
long long mask[1 << 20];
int m;
double q;
double memo[1 << 20];
int done[1 << 20];
double dp(int mk) {
  int pop = 0;
  if (mask[mk]) pop = __builtin_popcountll(mask[mk]);
  int pop2 = __builtin_popcountll(mk);
  if (pop <= 1) return 0;
  if (done[mk]) return memo[mk];
  double p = 1.0 / (m - pop2);
  double res = 0;
  for (int i = (0); i <= (m - 1); ++i) {
    if (mk & (1 << i)) continue;
    res += p * dp(mk | (1 << i));
    long long x = mask[mk | (1 << i)];
    x = x ^ mask[mk];
    x = __builtin_popcountll(x);
    res += p * x * q * (pop2 + 1);
  }
  done[mk] = 1;
  return memo[mk] = res;
}
int main() {
  int n;
  scanf("%d", &n);
  q = 1.0 / n;
  for (int i = (0); i <= (n - 1); ++i) {
    scanf("%s", &buf[i][0]);
  }
  m = strlen(&buf[0][0]);
  for (int i = (0); i <= (n - 1); ++i) {
    for (int j = (i + 1); j <= (n - 1); ++j) {
      int tmask = 0;
      for (int k = (0); k <= (m - 1); ++k) {
        if (buf[i][k] == buf[j][k]) tmask |= (1LL << k);
      }
      mask[tmask] |= (1LL << i);
      mask[tmask] |= (1LL << j);
    }
  }
  int limit = 1 << m;
  for (int i = (limit - 1); i >= (0); --i) {
    for (int k = (0); k <= (m - 1); ++k) {
      if (i & (1 << k)) {
        mask[i ^ (1 << k)] |= mask[i];
      }
    }
  }
  double res = dp(0);
  printf("%.10lf\n", res);
  return 0;
}
