Bjornie, ознакомьтесь с документацией. Про get_close_matches() написано: "The best (no more than n) matches among the possibilities are returned in a list, sorted by similarity score, most similar first." - то есть первым (нулевым) элементом возвращаемого списка всегда будет наиболее похожая строка. При этом cutoff можно даже задать равным нулю, этот параметр используется только для редукции результата. Также через cutoff можно отсекать заведомо неподходящие результаты, чтобы в случае отсутствия логического совпадения не выводить наиболее похожее, которое ответом не является.
1) А в чём смысл сначала соединять слова через пробел, а потом их же сплитить?
2) Зачем читаете файл в память целиком? А если он размером несколько гигабайт?
3) Зачем к значению сначала прибавляете единицу, а потом вычитаете?
4) Плохая практика работать с файлами вне контекста with, т.к. в случае исключения close() не сработает, а с контекстом явное close() не требуется (будет выполнено автоматически).