I see a couple of these on codereview but I was hoping my way hasn't yet been encountered:

    def is_palindrome_permutation(strng):
        cache = set()
        for char in strng.lower():
            if not char.isalpha():
                continue
            if char in cache:
                cache.remove(char)
            else:
                cache.add(char)
    
        return len(cache) <= 1

Instead of maintaining any counts of characters to check for oddness or evenness, simply add and remove characters from a set. A character repeated an even number of times will be removed from the set; a character repeated an odd number of times will remain in the set. If the final set has a length less than or equal to one, it is a permutation of a palindrome.