<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def minimise(routing_table, target_length):
 """Reduce the size of a routing table by merging together entries where possible and by removing any remaining default routes. .. warning:: The input routing table *must* also include entries which could be removed and replaced by default routing. .. warning:: It is assumed that the input routing table is not in any particular order and may be reordered into ascending order of generality (number of don't cares/Xs in the key-mask) without affecting routing correctness. It is also assumed that if this table is unordered it is at least orthogonal (i.e., there are no two entries which would match the same key) and reorderable. .. note:: If *all* the keys in the table are derived from a single instance of :py:class:`~rig.bitfield.BitField` then the table is guaranteed to be orthogonal and reorderable. .. note:: Use :py:meth:`~rig.routing_table.expand_entries` to generate an orthogonal table and receive warnings if the input table is not orthogonal. Parameters Routing entries to be merged. target_length : int or None Target length of the routing table; the minimisation procedure will halt once either this target is reached or no further minimisation is possible. If None then the table will be made as small as possible. Raises ------ MinimisationFailedError If the smallest table that can be produced is larger than `target_length`. Returns ------- Reduced routing table entries. """

    table, _ = ordered_covering(routing_table, target_length, no_raise=True)
    return remove_default_routes(table, target_length)