#include using namespace std; int val[255]; struct Card { char rank , suit; }; void pre() { int v = 2; for(char x = '2'; x <= '9'; x++) { val[x] = v++; } val['1'] = 10; val['J'] = val['Q'] = val['K'] = val['A'] = 10; } vector cards(5); int ileOdp = 0; int lastOdp = 0; int res = 0; mapsuitC; void f(int id) { int TEMP = res; if(id == 1) { //1 res++; int Jty = 0; for(auto& i : cards) if(i.rank == 'J') Jty++; res += Jty * val[cards[0].rank]; } if(id == 2) { //2 for(auto& i : suitC) if(i.second >= 2) { res *= 2; break; } } if(id == 3) { //3 if(suitC.size() == 4u) { res *= 2; } } if(id == 4) { //4 int black = suitC['C'] + suitC['S']; int red = suitC['D'] + suitC['H']; res += abs(black - red); } if(id == 5) { //5 if(res % 2 == 0) { int temp = res; for(int i = 1; i <= temp;i++) { if(temp % i == 0) { res += i; } } } } if(id == 6) { //6 int sied = 0 ; for(auto& i : cards) if(i.rank == '7') sied++; if(sied == 4) { res -= 11 * 11; } } if(id == 7) { //7 if(res >= 0) { int minn = 10; for(auto& i : cards) minn = min(minn,val[i.rank]); res += minn; } } if(id == 8) { //8 if(res < 0) { res *= -1; } } if(id == 9) { //9 if(suitC['D'] == 3) { res++; for(auto& i : cards) { if(i.rank == '6') i.rank = '9'; else if(i.rank == '9') i.rank = '6'; else if(i.rank == '2') i.rank = '5'; else if(i.rank == '5') i.rank = '2'; } } } if(id == 10) { //10 vector karty; for(char x = '2'; x <= '9';x++) karty.push_back(x); karty.push_back('1'); karty.push_back('J'); karty.push_back('Q'); karty.push_back('K'); karty.push_back('A'); bool strit = false; for(int i = 0 ;i < karty.size() - 5; i++) { int ile = 0; for(int j = i; j < i + 5; j++) { bool jest = false; for(auto& k : cards) if(k.rank == karty[j]) jest = true; ile += jest; } if(ile == 5) { strit = true; break; } } if(strit) { int asy = 0; for(auto& i : cards) if(i.rank == 'A') asy++; res += 5 * asy; } } if(id == 11) { //11 if(ileOdp > 8) { int x = 0; for(int i = 0 ; i < 30; i++) if(res & (1 << i)) x++; res += x; } } //12 if(id == 12) { int dwa = 0; for(auto& i : cards) if(i.rank == '2') dwa++; if(dwa > 0) { f(lastOdp); } } //13 if(id == 13) { int dwa = 0; for(auto& i : cards) if(i.rank == '2') dwa++; if(dwa > 0) { int temp = res; int licz = 1; int k = 2; while(k * k <= temp) { while(temp % k == 0) { licz *= k; temp /= k; } k++; } if(temp > 1) licz *= temp; res += licz; } } if(res != TEMP) { ++ileOdp; lastOdp = id; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); pre(); for(auto& i : cards) { string s; cin >> s; if(s.size() == 2u) i.rank = s[0], i.suit = s[1]; else i.rank = s[0], i.suit = s[2]; } //pocz for(auto& i : cards) res += val[i.rank]; for(auto& i : cards) suitC[i.suit]++; for(int i = 1; i <= 13;i++) f(i); cout << res; return 0; }