def parse_ship_pairs(pairs):
    """Parses the supplied ship count pairs and returns a ship count dict.

    Expects a list of strings with each string containing a ship and quantity
    using a colon as the seperator - ship:quanity.

    If the an empty list is passed or an error occurs trying to parse the input
    then None will be returned.
    """
    if not pairs:
        return None
    ship_counts = {}
    for pair in pairs:
        try:
            ship, count = pair.split(':', 1)
        except ValueError:
            return None
        else:
            ship_counts[str.lower(ship)] = count
    return ship_counts
