def dispense_cash(amount):
    """ Determine the minimum number of ATM bills to meet the requested amount to dispense
    
    Parameters
    ----------
    amount : int
        The amount of money requested from the ATM
        
    Returns
    -------
    int
        The number of bills needed, -1 if it can't be done
    """
    """
    If the amount isn't divisible by 10, then no need to bother cause it won't work
    Assuming it is divisible by 10, then let's fulfill the request starting with the 
    largest bills and moving to smaller bills
    """
    # Get the number of $500 bills that could be used
    # Total to dispense - (however much we gave in $500) figure out the 100s
    # Of what's left, how many $50 bills can we give
    # Again taking what's left, get the max number of 20s
    # Finally, if there is anything left it must be a 10
    total_bills = 0
    if amount % 10 != 0:
        return -1  # Can't be done, because it has to be a multiple of 10

    # How many $500 bills can we dispense
    b_500 = amount // 500  # The // operator does integer only division - such that 4 // 3 = 1
    left_over = amount % 500  # The 'mod' operator says give me the remainder of the division

    # How many $100 bills can we dispense
    b_100 = left_over // 100
    left_over = left_over % 100

    # How many $50 bills can we dispense
    b_50 = left_over // 50
    left_over = left_over % 50

    # How many $20 bills can we dispense
    b_20 = left_over // 20
    left_over = left_over % 20

    # How many $10 bills can we dispense
    b_10 = left_over // 10

    total_bills = b_500 + b_100 + b_50 + b_20 + b_10
    return total_bills