def find_best_prospect(guard_sleep_schedule):
    """
    Given a guard sleep schedule, which is a dictionary of guard id to lists length 60 showing the number of minutes
    they spent sleeping during the hour starting at midnight, find the sleepiest guard, and the minute he is most
    likely to be asleep.
    :param guard_sleep_schedule: the guard_sleep_schedule
    :return: a pair (guard id, minute)

    >>> schedule = []
    >>> schedule.append('[1518-11-01 00:00] Guard #10 begins shift')
    >>> schedule.append('[1518-11-01 00:05] falls asleep')
    >>> schedule.append('[1518-11-01 00:25] wakes up')
    >>> schedule.append('[1518-11-01 00:30] falls asleep')
    >>> schedule.append('[1518-11-01 00:55] wakes up')
    >>> schedule.append('[1518-11-01 23:58] Guard #99 begins shift')
    >>> schedule.append('[1518-11-02 00:40] falls asleep')
    >>> schedule.append('[1518-11-02 00:50] wakes up')
    >>> schedule.append('[1518-11-03 00:05] Guard #10 begins shift')
    >>> schedule.append('[1518-11-03 00:24] falls asleep')
    >>> schedule.append('[1518-11-03 00:29] wakes up')
    >>> schedule.append('[1518-11-04 00:02] Guard #99 begins shift')
    >>> schedule.append('[1518-11-04 00:36] falls asleep')
    >>> schedule.append('[1518-11-04 00:46] wakes up')
    >>> schedule.append('[1518-11-05 00:03] Guard #99 begins shift')
    >>> schedule.append('[1518-11-05 00:45] falls asleep')
    >>> schedule.append('[1518-11-05 00:55] wakes up')
    >>> find_best_prospect(parse_schedule(schedule))
    (10, 24)
    """
    guard_id = max(guard_sleep_schedule, key=lambda x: sum(guard_sleep_schedule[x]))
    sleep_schedule = guard_sleep_schedule[guard_id]
    minute = max(zip(sleep_schedule, range(60)))[1]
    return guard_id, minute