def number(selection_string: str, minimum: int, maximum: int, default = None) -> int:
    """
    Asks the user for a number within the provided minimum and maximum with optional default and returns their response
    """
    while True:
        if default:
            input_string = f"{selection_string} default={default}: "
        else:
            input_string = f"{selection_string}: "
        option = input(input_string).strip()
        if len(option) == 0 and default:
            return default
        if not option.isnumeric():
            print(f"'{option} must be a valid number!")
        option = int(option)
        if option < minimum or option > maximum:
            print(f"{option} must be between: {minimum} and {maximum}!")
        else:
            return option