def is_palindrome_permutation(input_string):
    """Checks to see if input_string is a permutation of a palindrome

    Using bool (is even?) instead of int value reduces space usage.

    Parameters
    ----------
    input_string : str
        String to check

    Returns
    -------
    bool
        True if input_string is a palindrome permutation, False otherwise
    """
    # Generate is even counts hash table
    char_counts_is_even = {}
    for char in input_string:
        if char not in char_counts_is_even:
            char_counts_is_even[char] = False
        else:
            # if True (even count), swithc it to False (odd count)
            if char_counts_is_even[char]:
                char_counts_is_even[char] = False
            # if False switch to True
            else:
                char_counts_is_even[char] = True

    # Check is even counts are mostly even (allow up to 1 odd count)
    num_odd_counts = 0  # keep track of how many counts are odd
    for key, is_char_count_even in char_counts_is_even.items():
        # Check to see if count is odd
        if not is_char_count_even:
            num_odd_counts += 1
        # Check not too many odds
        if num_odd_counts > 1:
            return False

    return True