#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
typedef pair<int, vector<int> > data;

string A[2],B[2],C[3];

P x[5],y[5],z[5];

void Sort(vector<int> &v){
  sort(v.begin(),v.end());
  reverse(v.begin(),v.end());
}

void add(vector<int> &v,vector<int> &w){
  for(int i=0;i<(int)w.size();i++)
    v.push_back(w[i]);
}

data calc(vector<P> t){
  data res=data( -1 , vector<int> () );
  
  int st=-1,c3=0,c2=0;
  int s[4]={},maxms=0;
  int f[15]={},maxmf=0;
  for(int i=0;i<5;i++){
    s[ t[i].first ]++;
    if(t[i].second==1)t[i].second=14;
    f[ t[i].second ]++;
  }
  
  for(int i=0;i<4;i++)maxms=max(maxms,s[i]);
  for(int i=2;i<=14;i++){
    maxmf=max(maxmf,f[i]);
    if(f[i]==3)c3++;
    if(f[i]==2)c2++;
  }
  
  
  for(int i=2;i<=10;i++)
    if(f[i]&&f[i+1]&&f[i+2]&&f[i+3]&&f[i+4])st=i;
  if(f[14]&&f[2]&&f[3]&&f[4]&&f[5])st=1;
  
  if(maxms==5&& st!=-1){
    res.first=10;
    for(int i=4;i>=0;i--)
      res.second.push_back(st+i);
    return res;
  }
  if( maxmf == 4 ){
    res.first=8;
    vector<int> tmp;
    for(int i=2;i<=14;i++){
      if(f[i]==4){
        for(int j=0;j<4;j++)
          res.second.push_back(i);
      }else if(f[i]>0){
        for(int j=0;j<f[i];j++)tmp.push_back(i);
      }
    }
    Sort(tmp);
    add(res.second,tmp);
    return res;
  }
  
  if(c3==1&&c2==1){
    res.first=7;
    vector<int> tmp;
    
    for(int i=2;i<=14;i++){
      if(f[i]==3){
        for(int j=0;j<3;j++)res.second.push_back(i);
      }else if(f[i]==2){
        for(int j=0;j<2;j++)tmp.push_back(i);
      }
    }
    add(res.second,tmp);
    return res;
  }

  if(maxms==5){
    res.first=6;
    for(int i=2;i<=14;i++)
      if(f[i])res.second.push_back(i);
    Sort(res.second);
    return res;
  }

  if(st!=-1){
    res.first=5;
    for(int i=4;i>=0;i--)
      res.second.push_back(st+i);
    return res;
  }

  if(c3==1){
    res.first=4;
    vector<int> tmp;
    for(int i=2;i<=14;i++){
      if(f[i]==3){
        for(int j=0;j<3;j++)res.second.push_back(i);
      }else if(f[i]){
        tmp.push_back(i);
      }
    }
    Sort(tmp);
    add(res.second,tmp);
    return res;    
  }

  if(c2==2){
    res.first=3;
    vector<int> tmp;
    for(int i=2;i<=14;i++){
      if(f[i]==2){
        for(int j=0;j<2;j++)res.second.push_back(i);
      }else if(f[i]){
        tmp.push_back(i);
      }
    }
    Sort(res.second);
    Sort(tmp);
    add(res.second,tmp);
    return res;
  }

  if(c2==1){
    res.first=2;
    vector<int> tmp;
    for(int i=2;i<=14;i++){
      if(f[i]==2){
        for(int j=0;j<2;j++)res.second.push_back(i);
      }else if(f[i]){
        tmp.push_back(i);
      }
    }
    Sort(res.second);
    Sort(tmp);
    add(res.second,tmp);
    return res;
  }

  res.first=1;
  for(int i=2;i<=14;i++)
    if(f[i])res.second.push_back(i);
  Sort(res.second);
  return res;
}

data get(vector<P> t){
  data res=data(-1, vector<int>() );

  for(int i=0;i<7;i++){
    for(int j=0;j<i;j++){
      vector<P> tmp;
      
      for(int k=0;k<7;k++)
        if(i!=k&&j!=k)
          tmp.push_back(t[k]);

      res=max(res, calc(tmp));
    }
  }
  return res;
}

bool check(){
  vector<P> vx,vy;
  for(int i=0;i<5;i++){
    vx.push_back(z[i]);
    vy.push_back(z[i]);
    if(i<2){
      vx.push_back(x[i]);
      vy.push_back(y[i]);
    }
  }

  data dx=get(vx);
  data dy=get(vy);

  assert( dx.second.size() == 5 );
  assert( dy.second.size() == 5 );
  if(dx<dy){
    /*
    cout<<z[3].first<<' '<<z[3].second<<endl;
    cout<<z[4].first<<' '<<z[4].second<<endl;
    
    cout<<dx.first<<endl;
    for(int i=0;i<5;i++){
      cout<<dx.second[i]<<' ';
    }
    cout<<endl;
    
    cout<<dy.first<<endl;
    for(int i=0;i<5;i++){
      cout<<dy.second[i]<<' ';
    }
    cout<<endl;
    cout<<endl;
    */
  }
  return (dx>dy);
}


P change(string s){
  P res;
  if(s[0]=='S')res.first=0;
  if(s[0]=='H')res.first=1;
  if(s[0]=='C')res.first=2;
  if(s[0]=='D')res.first=3;
  if(s[1]=='A')res.second=1;
  if(s[1]=='T')res.second=10;
  if(s[1]=='J')res.second=11;
  if(s[1]=='Q')res.second=12;
  if(s[1]=='K')res.second=13;
  if('0'<=s[1]&&s[1]<='9')res.second=s[1]-'0';
  return res;
}

int main(){
  while(1){
    cin>>A[0];
    if(A[0]=="#")break;
    cin>>A[1]>>B[0]>>B[1]>>C[0]>>C[1]>>C[2];
    x[0]=change(A[0]);
    x[1]=change(A[1]);
    y[0]=change(B[0]);
    y[1]=change(B[1]);
    z[0]=change(C[0]);
    z[1]=change(C[1]);
    z[2]=change(C[2]);

    map<P, map<P,bool> > mp;
      
    int count=0;
    int total=0;
    for(int i=0;i<4;i++){
      for(int j=1;j<=13;j++){
        for(int k=0;k<4;k++){
          for(int l=1;l<=13;l++){
            P na=P(i,j);
            P nb=P(k,l);


            if(na==nb)continue;
            bool flg=false;
            for(int m=0;m<3;m++){
              if(m<2&&na==x[m])flg=true;
              if(m<2&&na==y[m])flg=true;
              if(na==z[m])flg=true;
              if(m<2&&nb==x[m])flg=true;
              if(m<2&&nb==y[m])flg=true;
              if(nb==z[m])flg=true;
            }
            if(flg)continue;
            if(mp[na][nb])continue;
            mp[na][nb]=true;
            mp[nb][na]=true;
            total++;
            z[3]=na;
            z[4]=nb;
            
            //            cout<<x[0].first<<' '<<x[0].second<<' ';
            //            cout<<i<<' '<<j<<' '<<k<<' '<<l<<endl;
              
            if(check())count++;

          }
        }
      }
    }

    printf("%.16f\n",(double)(count)/(double)(total));
  }
  return 0;
}

Measured memory_bytes: 1400