Как сравнивать строки по неполному сходству?
Расстояние Левенштейна или другие метрики для сравнения.
Про расстояние Левенштейна (как базовую метрику, с которой стоит начинать) вам уже написали. Проблема начинается, как по мне, в момент, когда приходит понимание, что "слова могут быть переставлены". И тут вам придется вспомнить комбинаторику и все эти факториалы. Потому как даже для трех слов количество перестановок будет равно 3! = 6. А вы, опять же скорее всего, будете брать и сплитить вашу строку по пробелам и сравнивать каждое слово с каждым. Чувствуете возрастающую сложность?