My bad. I interpreted your post to mean the same word appeared more than once in a sentence. To find instances where a given two words occur, you would need two wildcard Finds, where:
Find = <word1>[!.]@<word2>
and:
Find = <word2>[!.]@<word1>
To find instances where a given three words occur, you would need six wildcard Finds, where:
Find = <word1>[!.]@<word2>[!.]@<word3>
and:
Find = <word1>[!.]@<word3>[!.]@<word2>
and:
Find = <word2>[!.]@<word1>[!.]@<word3>
and:
Find = <word2>[!.]@<word3>[!.]@<word1>
and:
Find = <word3>[!.]@<word1>[!.]@<word2>
and:
Find = <word3>[!.]@<word2>[!.]@<word1>
and so on. Obviously, if it could be any two of the 3 words, another six wildcard Finds would be needed.
The result will highlight strings beginning & ending with the first & last specified words within a sentence. Do note that the Find won't work with strings that include abbreviations containing periods.
A macro could be used to automate the matching for any number of words in any order but, as you can see from just the examples above, the complexity rapidly increases as you add more words.