You are given two **0-indexed** strings `word1` and `word2`.

A **move** consists of choosing two indices `i` and `j` such that `0 <= i < word1.length` and `0 <= j < word2.length` and swapping `word1[i]` with `word2[j]`.

Return `true` _if it is possible to get the number of distinct characters in_ `word1` _and_ `word2` _to be equal with **exactly one** move._ Return `false` _otherwise_.

**Example 1:**

**Input:** word1 =  "ac ", word2 =  "b "
**Output:** false
**Explanation:** Any pair of swaps would yield two distinct characters in the first string, and one in the second string.

**Example 2:**

**Input:** word1 =  "abcc ", word2 =  "aab "
**Output:** true
**Explanation:** We swap index 2 of the first string with index 0 of the second string. The resulting strings are word1 =  "abac " and word2 =  "cab ", which both have 3 distinct characters.

**Example 3:**

**Input:** word1 =  "abcde ", word2 =  "fghij "
**Output:** true
**Explanation:** Both resulting strings will have 5 distinct characters, regardless of which indices we swap.

**Constraints:**

*   `1 <= word1.length, word2.length <= 105`
*   `word1` and `word2` consist of only lowercase English letters.


def compare(w1, w2):
    counts_w1 = [0]*26
    counts_w2 = [0]*26
    for c in w1:
        counts_w1[ord(c)-ord('a')] += 1
    for c in w2:
        counts_w2[ord(c)-ord('a')] += 1
    for i in range(26):
        if counts_w1[i] and counts_w2[i]:
            return True
    return False


def swap_equal_distinct(word1, word2):
    exch = compare(word1, word2)
    return exch and len(word1) == len(word2)
