Problem H. Hands of Poker

The standard 52-card deck consists of 52 cards divided into 4 suits: clubs, diamonds, hearts and spades. For each suit there are 13 ranks: 2, 3, 4, 5, 6, 7, 8, 9, 10, jack, queen, king and ace, listed from the lowest to the highest.

A card is denoted by its rank ('2'...'9' for 2...9, 'T' for 10, 'J' for jack, 'Q' for queen, 'K' for king, and 'A' for ace) followed by its suit ('C' for clubs, 'D' for diamonds, 'H' for hearts, and 'S' for spades). Cards are partially ordered by their ranks. The suit does not play a role in the cards ordering.

A Poker hand is a set of five distinct cards. Each hand is said to have a certain ranking. A hand with a higher ranking beats a hand with a lower one. Two hands of the same ranking are compared using a tie-breaking rule specific for their ranking - either one of them beats the other or they are tied.

The list of poker rankings is given below, from the worst ranking to the best ranking. If a hand satisfies several rankings, only the best one is considered.

  • High Card - Does not fit into any ranking below. When comparing with another High Card hand, the ranks of the highest cards in the two hands are first compared. If there is a tie, the second highest cards in each hand are compared, and so on. (Example: QS, JH, 9C, 7H, 3D)
  • One Pair - Two cards of the same rank. Pair with higher rank beats the lower pair. In case of a tie, the remaining three cards are used as tie-breakers, compared in the descending order of their ranks (as in High Card). (Example: 6D, 6H, QD, 9H, 4S)
  • Two Pairs - Two pairs of cards of the same rank. When comparing with another Two Pairs hand, the higher pair is first compared, then the lower pair, and finally the rank of the fifth remaining card. (Example: JH, JS, TS, TD, 8S)
  • Three of a Kind - Three cards of the same rank. Three-of-a-kind with the higher rank beats the lower one. In case of a tie, the remaining two cards are used as tie-breakers, compared in the descending order. (Example: 5S, 5H, 5D, JH, 6D)
  • Straight - Five cards in consecutive rank. An ace can either be accounted above a king or below a two, but not both, so wrapping is not allowed. Two straights are compared using the rank of the highest card (in the case of A, 2, 3, 4, 5, the highest card is considered to be 5). (Example: QH, JC, TH, 9D, 8D)
  • Flush - Five cards of the same suit. When comparing two Flushes, the rank of the highest card is first considered, then the second highest and so on (as in High Card). (Example: AS, JS, 8S, 6S, 5S)
  • Full House - Three cards of the same rank, and two cards of same rank. When comparing with another Full House, the rank of the three cards is first compared, then the rank of the two cards. (Example: 7S, 7H, 7C, JC, JH)
  • Four of a Kind - Four cards of the same rank. Two four-of-a-kinds are first compared by the ranksof the four cards. In case of a tie, the rank of the fifth card is used as a tie-breaker. (Example: 4C, 4D, 4H, 4S, TD)
  • Straight Flush - A hand that is both a Straight and a Flush. Same tie-breaker as for a Straight. (Example: TH, 9H, 8H, 7H, 6H)

Consider the set Η of all Poker hands. Let us introduce an evaluation function v : Η → {1, ..., 7462}, such that for any two Poker hands a and b, a beats b if and only if v(a) > v(b). There exists exactly one such evaluation function v.

Given a Poker hand a, find the value of v(a).

Input

The input contains space-separated list of five distinct card descriptions. Each card is described with two characters denoting its rank and suit, respectively. The ranks are denoted by '2'...'9', 'T', 'J', 'Q', 'K', and 'A' (listed here in the ascending order). The suits are denoted by 'C', 'D', 'H', and 'S'.

Output

Output the value of the evaluation function v(a) for the given hand a.

Sample Input

3S 7S 2C 4S 5H

Sample Output

1

Sample Input

JH AH TH KH QH

Sample Output

7462

All Submissions
Best Solutions


Point Value: 15 (partial)
Time Limit: 2.00s
Memory Limit: 16M
Added: Aug 19, 2011

Languages Allowed:
C++03, PAS, C, HASK, ASM, RUBY, PYTH2, JAVA, PHP, SCM, CAML, PERL, C#, C++11, PYTH3

Comments (Search)

It's quiet in here...