Finds all possible one letter edits of word_string:
    - Splitting word_string into two words at all character locations
    - Deleting one letter at all character locations
    - Switching neighbouring characters
    - Replacing a character with every alphabetical letter
    - Inserting all possible alphabetical characters between each character location including boundaries

    Returns all one letter edits as a set instance.

def find_one_letter_edits(word_string):
    '''
    Finds all possible one letter edits of word_string:
    - Splitting word_string into two words at all character locations
    - Deleting one letter at all character locations
    - Switching neighbouring characters
    - Replacing a character with every alphabetical letter
    - Inserting all possible alphabetical characters between each character location including boundaries

    Returns all one letter edits as a set instance.
    '''
    if word_string is None:
        return {}
    elif isinstance(word_string, str):
        splits = [(word_string[:i], word_string[i:]) for i in range(len(word_string) + 1)]
        deletes = [L + R[1:] for L, R in splits if R]
        transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R) > 1]
        replaces = [L + c + R[1:] for L, R in splits if R for c in EN_ALPHABET]
        inserts = [L + c + R for L, R in splits for c in EN_ALPHABET]
        return set(deletes + transposes + replaces + inserts)
    else:
        raise InputError("string or none type variable not passed as argument to find_one_letter_edits")