#include <bits/stdc++.h>
using namespace std;
struct card {
int c, n;
};
bool operator == (card &x, card &y) {
return x.c == y.c && x.n == y.n;
}
card me[2], en[2], pu[9];
card a[5], b[5], c[5];
int s1, s2, s3;
bool ok() {
pu[5] = me[0], pu[6] = me[1];
pu[7] = en[0], pu[8] = en[1];
card t = {0, 0};
for (int i = 0; i < 9; i++) {
for (int j = i + 1; j < 9; j++) {
if (pu[i] == pu[j]) {
pu[5] = pu[6] = pu[7] = pu[8] = t;
return 0;
}
}
}
return 1;
}
bool cmp(card &x, card &y) {
return (x.n != y.n) ? (x.n > y.n) : (x.c < y.c);
}
bool cmpa() {
if (s1 != s3) return s1 > s3;
if (s1 == 9) return 0;
if (s1 == 8) {
return a[0].n > c[0].n;
}
if (s1 == 7) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
return a[4].n > c[4].n;
}
if (s1 == 6) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
return a[4].n > c[4].n;
}
if (s1 == 5) {
for (int i = 0; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0;
}
if (s1 == 4) {
return a[0].n > c[0].n;
}
if (s1 == 3) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
if (a[3].n != c[3].n) return a[3].n > c[3].n;
return a[4].n > c[4].n;
}
if (s1 == 2) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
if (a[3].n != c[3].n) return a[3].n > c[3].n;
return a[4].n > c[4].n;
}
if (s1 == 1) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
for (int i = 2; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0;
}
for (int i = 0; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0;
}
bool cmpb() {
if (s2 != s3) return s2 > s3;
if (s2 == 9) return 0;
if (s2 == 8) {
return a[0].n > c[0].n;
}
if (s2 == 7) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
return a[4].n > c[4].n;
}
if (s2 == 6) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
return a[4].n > c[4].n;
}
if (s2 == 5) {
for (int i = 0; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0;
}
if (s2 == 4) {
return a[0].n > c[0].n;
}
if (s2 == 3) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
if (a[3].n != c[3].n) return a[3].n > c[3].n;
return a[4].n > c[4].n;
}
if (s2 == 2) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
if (a[3].n != c[3].n) return a[3].n > c[3].n;
return a[4].n > c[4].n;
}
if (s2 == 1) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
for (int i = 2; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0;
}
for (int i = 0; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0;
}
bool check() {
if (s1 != s2) return s1 > s2;
if (s1 == 9) return 0;
if (s1 == 8) {
return a[0].n > b[0].n;
}
if (s1 == 7) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
return a[4].n > b[4].n;
}
if (s1 == 6) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
return a[4].n > b[4].n;
}
if (s1 == 5) {
for (int i = 0; i < 5; i++) {
if (a[i].n != b[i].n) return a[i].n > b[i].n;
}
return 0;
}
if (s1 == 4) {
return a[0].n > b[0].n;
}
if (s1 == 3) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
if (a[3].n != b[3].n) return a[3].n > b[3].n;
return a[4].n > b[4].n;
}
if (s1 == 2) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
if (a[3].n != b[3].n) return a[3].n > b[3].n;
return a[4].n > b[4].n;
}
if (s1 == 1) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
for (int i = 2; i < 5; i++) {
if (a[i].n != b[i].n) return a[i].n > b[i].n;
}
return 0;
}
for (int i = 0; i < 5; i++) {
if (a[i].n != b[i].n) return a[i].n > b[i].n;
}
return 0;
}
void judgec() {
if (c[0].c == c[1].c && c[1].c == c[2].c && c[2].c == c[3].c && c[3].c == c[4].c) {
if (c[0].n == 14 && c[1].n == 13 && c[2].n == 12 && c[3].n == 11 && c[4].n == 10) {
s3 = 9;
return;
}
if (c[0].n == c[1].n + 1 && c[1].n == c[2].n + 1 && c[2].n == c[3].n + 1 && c[3].n == c[4].n + 1) {
s3 = 8;
return;
}
if (c[0].n == 14 && c[1].n == 5 && c[2].n == 4 && c[3].n == 3 && c[4].n == 2) {
swap(c[0], c[1]);
swap(c[1], c[2]);
swap(c[2], c[3]);
swap(c[3], c[4]);
s3 = 8;
return;
}
}
if (c[0].n == c[1].n && c[1].n == c[2].n && c[2].n == c[3].n) {
s3 = 7;
return;
}
if (c[1].n == c[2].n && c[2].n == c[3].n && c[3].n == c[4].n) {
s3 = 7;
return;
}
if (c[0].n == c[1].n && c[1].n == c[2].n && c[3].n == c[4].n) {
s3 = 6;
return;
}
if (c[0].n == c[1].n && c[2].n == c[3].n && c[3].n == c[4].n) {
s3 = 6;
c[0] = c[4];
c[4] = c[3] = c[2] = c[1];
c[1] = c[0];
return;
}
if (c[0].c == c[1].c && c[1].c == c[2].c && c[2].c == c[3].c && c[3].c == c[4].c) {
s3 = 5;
return;
}
if (c[0].n == c[1].n + 1 && c[1].n == c[2].n + 1 && c[2].n == c[3].n + 1 && c[3].n == c[4].n + 1) {
s3 = 4;
return;
}
if (c[0].n == 14 && c[1].n == 5 && c[2].n == 4 && c[3].n == 3 && c[4].n == 2) {
s3 = 4;
c[0].n = 1;
return;
}
if (c[0].n == c[1].n && c[1].n == c[2].n) {
s3 = 3;
return;
}
if (c[1].n == c[2].n && c[2].n == c[3].n) {
s3 = 3;
c[3] = c[0];
c[0] == c[1];
if (c[3].n < c[4].n) swap(c[3], c[4]);
return;
}
if (c[2].n == c[3].n && c[3].n == c[4].n) {
s3 = 3;
c[4] = c[0];
c[3] = c[1];
c[0] = c[1] = c[2];
if (c[3].n < c[4].n) swap(c[3], c[4]);
return;
}
if (c[0].n == c[1].n) {
if (c[2].n == c[3].n) {
s3 = 2;
if (c[0].n < c[2].n) {
swap(c[0], c[2]);
c[1] = c[0];
c[3] = c[2];
}
return;
}
if (c[3].n == c[4].n) {
s3 = 2;
swap(c[4], c[2]);
if (c[0].n < c[2].n) {
swap(c[0], c[2]);
c[1] = c[0];
c[3] = c[2];
}
return;
}
}
if (c[1].n == c[2].n) {
if (c[3].n == c[4].n) {
s3 = 2;
swap(c[0], c[4]);
swap(c[1], c[3]);
if (c[0].n < c[2].n) {
swap(c[0], c[2]);
c[1] = c[0];
c[3] = c[2];
}
return;
}
}
if (c[0].n == c[1].n) {
s3 = 1;
return;
}
if (c[1].n == c[2].n) {
s3 = 1;
swap(c[2], c[0]);
return;
}
if (c[2].n == c[3].n) {
s3 = 1;
swap(c[0], c[2]);
swap(c[1], c[3]);
return;
}
if (c[3].n == c[4].n) {
s3 = 1;
swap(c[0], c[3]);
swap(c[1], c[4]);
swap(c[2], c[3]);
swap(c[3], c[4]);
return;
}
s3 = 0;
return;
}
int main() {
string s;
while (cin >> s) {
if (s == "#") break;
{
int num, cd;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
me[0] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
me[1] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
en[0] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
en[1] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
pu[0] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
pu[1] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
pu[2] = {cd, num};
}
int ans = 0, cnt = 0;
for (int i = 0; i < 4; i++) {
for (int j = 2; j <= 14; j++) {
for (int k = 0; k < 4; k++) {
for (int l = 2; l <= 14; l++) {
pu[3] = {i, j};
pu[4] = {k, l};
if (!ok()) continue;
memset(c, 0, sizeof(c));
s3 = s1 = s2 = 0;
for (int m = 0; m < 7; m++) {
for (int n = m + 1; n < 7; n++) {
for (int o = n + 1; o < 7; o++) {
for (int p = o + 1; p < 7; p++) {
for (int q = p + 1; q < 7; q++) {
pu[5] = me[0];
pu[6] = me[1];
c[0] = pu[m];
c[1] = pu[n];
c[2] = pu[o];
c[3] = pu[p];
c[4] = pu[q];
sort(c, c + 5, cmp);
judgec();
if (!cmpa()) {
for (int i = 0; i < 5; i++) a[i] = c[i];
s1 = s3;
}
pu[5] = en[0];
pu[6] = en[1];
c[0] = pu[m];
c[1] = pu[n];
c[2] = pu[o];
c[3] = pu[p];
c[4] = pu[q];
sort(c, c + 5, cmp);
judgec();
if (!cmpb()) {
for (int i = 0; i < 5; i++) b[i] = c[i];
s2 = s3;
}
}
}
}
}
}
ans += check();
cnt++;
}
}
}
}
double pwin = (double)ans / cnt;
printf("%.20lf\n", pwin);
}
return 0;
}