def parse_rule(rule):
    """
    Parses the rule and returns a dict describing the rule

    >>> parse_rule('1-3 a')
    {'start': 1, 'end': 3, 'char': 'a'}
    >>> parse_rule('1-3 b')
    {'start': 1, 'end': 3, 'char': 'b'}
    >>> parse_rule('2-9 c')
    {'start': 2, 'end': 9, 'char': 'c'}
    >>> parse_rule('2-99 c')
    {'start': 2, 'end': 99, 'char': 'c'}

    :param rule: the rule string
    :return:
    """
    value_range, character = rule.split(' ')
    start, end = value_range.split('-')
    return dict(start=int(start), end=int(end), char=character)