#include<bits/stdc++.h>
using namespace std;
struct state{
int c[10];
state(){}
state(string S){
for(int i=0;i<9;i++)
c[i]=S[i]-'0';
}
int val(){
int v=0;
for(int i=0;i<9;i++)v=v*5+c[i];
return v;
}
};
char pile[10][6][2];
double mem[2000000];
bool read(){
for (int i=0;i<9;i++)
for (int j=1;j<=4;j++)
if (!(cin>>pile[i][j]))
return false;
return true;
}
double dfs(state st){
double& ans=mem[st.val()];
if(ans!=-1.0) return ans;
ans=0.0;
int cnt=0;
for(int i=0;i<9;i++){
int& ci=st.c[i];
if(ci<1) continue;
for(int j=i+1;j<9;j++){
int& cj=st.c[j];
if(cj<1) continue;
if(pile[i][ci][0]==pile[j][cj][0]){
ci--,cj--;
ans+=dfs(st);
cnt++;
ci++,cj++;
}
}
}
if(!cnt) return ans=0.0;
return ans/=cnt;
}
int main(){
while(read()){
for(int i=0;i<=2000000;i++)mem[i]=-1.0;
mem[0]=1.0;
printf("%.6lf\n",dfs(state("444444444")));
}
return 0;
}