func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, len;   char str[55][25];   long long f[(1 << 20) + 10], bin[55];   double ans[(1 << 20) + 10];   double res;   int main() {     int i, j, k, c;     bin[0] = 1;     for (i = 1; i < 55; i++) bin[i] = (bin[i - 1] << 1);     scanf( %d , &n);     for (i = 0; i < n; i++) scanf( %s , str[i]);     len = strlen(str[1]);     for (i = 0; i < n; i++) {       for (j = 0; j < n; j++) {         if (i != j) {           int same = 0;           for (k = 0; k < len; k++) {             if (str[i][k] == str[j][k]) same |= bin[k];           }           f[same] |= bin[j];         }       }     }     for (i = bin[len] - 1; i >= 0; i--) {       for (j = 0; j < len; j++) {         if (i & bin[j]) {           f[i ^ bin[j]] |= f[i];         }       }     }     ans[0] = 1;     for (i = 0; i < bin[len]; i++) {       for (c = j = 0; j < len; j++) {         if (i & bin[j]) c++;       }       for (j = 0; j < len; j++) {         if (!(i & bin[j])) ans[i | bin[j]] += ans[i] / (len - c);       }       for (j = 0; j < n; j++) {         if (f[i] & bin[j]) res += ans[i];       }     }     printf( %.10f n , res / n);     return 0;   }   