def __init__(self, hand: str) -> None:
        if not isinstance(hand, str):
            raise TypeError(f"Hand should be of type 'str': {hand!r}")
        # split removes duplicate whitespaces so no need of strip
        if len(hand.split(" ")) != 5:
            raise ValueError(f"Hand should contain only 5 cards: {hand!r}")
        self._hand = hand
        self._first_pair = 0
        self._second_pair = 0
        self._card_values, self._card_suit = self._internal_state()
        self._hand_type = self._get_hand_type()
        self._high_card = self._card_values[0]