<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def which_lease_to_steal(self, stealable_leases, have_lease_count):
 """ Determines and return which lease to steal If the number of leases is a multiple of the number of hosts, then the desired configuration is that all hosts own the name number of leases, and the difference between the "biggest" owner and any other is 0. If the number of leases is not a multiple of the number of hosts, then the most even configurationpossible is for some hosts to have (self, leases/hosts) leases and others to have (self, (self, leases/hosts) + 1). For example, for 16 partitions distributed over five hosts, the distribution would be 4, 3, 3, 3, 3, or any of the possible reorderings. In either case, if the difference between this host and the biggest owner is 2 or more, then thesystem is not in the most evenly-distributed configuration, so steal one lease from the biggest. If there is a tie for biggest, we pick whichever appears first in the list because it doesn't really matter which "biggest" is trimmed down. Stealing one at a time prevents flapping because it reduces the difference between the biggest and this host by two at a time. If the starting difference is two or greater, then the difference cannot end up below 0. This host may become tied for biggest, but it cannot become larger than the host that it is stealing from. :param stealable_leases: List of leases to determine which can be stolen. :type stealable_leases: list[~azure.eventprocessorhost.lease.Lease] :param have_lease_count: Lease count. :type have_lease_count: int :rtype: ~azure.eventprocessorhost.lease.Lease """

        counts_by_owner = self.count_leases_by_owner(stealable_leases)
        biggest_owner = (sorted(counts_by_owner.items(), key=lambda kv: kv[1])).pop()
        steal_this_lease = None
        if (biggest_owner[1] - have_lease_count) >= 2:
            steal_this_lease = [l for l in stealable_leases if l.owner == biggest_owner[0]][0]

        return steal_this_lease