#include #include using namespace std; #define mp make_pair #define REP(A,B) for(int (A)=0;(A)<(B);(A)++) #define pb push_back #define lld long double char card[5]; int score(pair& C) { return (C.first >= 'A' && C.first <= 'Z') ? 10 : C.first; } vector< pair > cards; int scoren(int x) { return score(cards[x]); } #define ll long long int modifiedNo = 0; int lastModified = 0; ll applyrule(ll origAns, int ruleNo) { ll resAns = origAns; int Js = 0; map suitcount; map rankcount; int hasall = 0; REP(i, 5) { Js += cards[i].first == 'J'; rankcount[cards[i].first]++; hasall |= 1<= 0) { int mini = 50000; REP(i, 5) mini = min(mini, scoren(i)); resAns += mini; } } else if(ruleNo == 8) { if(resAns < 0) resAns *= -1; } else if(ruleNo == 9) { if(suitcount[0] >= 3) { resAns++; REP(i, 5) { if(cards[i].first == 6) { cards[i].first = 9; } else if(cards[i].first == 9) { cards[i].first = 6; } else if(cards[i].first == 2) { cards[i].first = 5; } else if(cards[i].first == 5) { cards[i].first = 2; } } } } else if(ruleNo == 10) { for(int start = 2; start <= 10; start++) { bool has = false; REP(i, 5) { char arr[] = {0, 0, 2, 3,4,5,6,7,8,9,10,'J','Q','K','A'}; if(rankcount[arr[i+start]] == 0) has = false; } if(has) { resAns += rankcount['A']*5; break; } } } else if(ruleNo == 11) { if(modifiedNo >= 8) { // lol } } else if(ruleNo == 12) { if(rankcount[2]) resAns = applyrule(resAns, lastModified); } else if(ruleNo == 13) { if(rankcount[2]) { ll orig = origAns; ll r = 1; for(ll p = 2; p*p <= orig; p++) { if(orig % p == 0) { while(orig % p == 0) { orig /= p; r *= p; } } } if(orig) { r *= orig; } resAns += r; } } return resAns; } int main() { REP(i, 5) { scanf("%s", card); char suit = card[0] == '1' ? card[2] : card[1]; if(suit == 'D') suit = 0; else if(suit == 'H') suit = 1; else if(suit == 'C') suit = 2; else suit = 3; card[1] = suit; cards.pb(mp(card[0] == '1' ? 10 : ((card[0] >= '2' && card[0] <= '9') ? card[0]-'0' : card[0]), suit)); // printf("%d %d\n", cards.back().first, cards.back().second); } ll ans = 0; REP(i, 5) ans += scoren(i); for(int rule = 1; rule <= 13; rule++) { ll nans = applyrule(ans, rule); //printf("rule[%d]: %lld\n", rule, nans); if(nans != ans) lastModified = rule; ans = nans; } printf("%lld\n", ans); //ans += score(cards[i]); return 0; }