human
Can you provide a the Python code you requested given the following:
Solve in Python:
Given two strings A and B of lowercase letters, return true if you can swap two letters in A so the result is equal to B, otherwise, return false.
Swapping letters is defined as taking two indices i and j (0-indexed) such that i != j and swapping the characters at A[i] and A[j]. For example, swapping at indices 0 and 2 in "abcd" results in "cbad".
 
Example 1:
Input: A = "ab", B = "ba"
Output: true
Explanation: You can swap A[0] = 'a' and A[1] = 'b' to get "ba", which is equal to B.

Example 2:
Input: A = "ab", B = "ab"
Output: false
Explanation: The only letters you can swap are A[0] = 'a' and A[1] = 'b', which results in "ba" != B.

Example 3:
Input: A = "aa", B = "aa"
Output: true
Explanation: You can swap A[0] = 'a' and A[1] = 'a' to get "aa", which is equal to B.

Example 4:
Input: A = "aaaaaaabc", B = "aaaaaaacb"
Output: true

Example 5:
Input: A = "", B = "aa"
Output: false

 
Constraints:

0 <= A.length <= 20000
0 <= B.length <= 20000
A and B consist of lowercase letters.
assistant
#Here is the Python code you requested.

class Solution:
    def buddyStrings(self, A: str, B: str) -> bool:
        count_A = {}
        doubled = False
        for i,a in enumerate(A):
            if a not in count_A:
                count_A[a] = set()
            else:
                doubled = True
            count_A[a].add(i)
        off = 0
        for i,b in enumerate(B):
            if b not in count_A:
                return False
            else:
                if i in count_A[b]:
                    count_A[b].remove(i)
                    if not count_A[b]:
                        del count_A[b]
                else:
                    off += 1
                    if off > 2:
                        return False
        return doubled or off == 2