Finds all potential words word_string could have intended to mean. If a word is not incorrectly
    spelled, it will return this word first, else if will look for one letter edits that are correct.
    If there are no valid one letter edits, it will perform a two letter edit search.

    If valid corrections are found, all are returned as a set instance. Should a valid word not be
    found, the original word is returned as a set instance.

def find_candidates(word_string):
    '''
    Finds all potential words word_string could have intended to mean. If a word is not incorrectly
    spelled, it will return this word first, else if will look for one letter edits that are correct.
    If there are no valid one letter edits, it will perform a two letter edit search.

    If valid corrections are found, all are returned as a set instance. Should a valid word not be
    found, the original word is returned as a set instance.
    '''
    if word_string is None:
        return {}
    elif isinstance(word_string, str):
        return (validate_words([word_string]) or validate_words(list(find_one_letter_edits(word_string)))
                or validate_words(list(find_two_letter_edits(word_string))) or set([word_string]))
    else:
        raise InputError("string or none type variable not passed as argument to find_candidates")