from collections import Counter
import typing

class DieCounter(Counter):
    def __init__(self, sides=6, **kwargs):
        super().__init__(**kwargs)
        self.sides = sides
    def append(self, val):
        if val < 0 or val > self.sides:
            raise ValueError("Invalid die value")
        self[val] += 1

def get_rolls():
    dice_rolled: typing.List[str] = []  # List of data values
    try:
        while True:
            dice_rolled.append(input("Enter roll in this format: 'r y': "))
    except KeyboardInterrupt:
        return dice_rolled

red_die = DieCounter()
yellow_die = DieCounter()

for roll in get_rolls():
    red, yellow = roll.split(" ")
    red_die.append(int(red))
    yellow_die.append(int(yellow))


def display_rolls(die: Counter[int]) -> None:
    for num, rolls in sorted(die.items()):
        print(f"{num}: rolled {rolls} out of {len(die)} rolls")


print("\nRed die:")
display_rolls(red_die)
print("Yellow die:")
display_rolls(yellow_die)
