Я думаю, что это невозможно.
В худшем случае все слова являются соседями.Пример 6 слов = {кот, толстый, крысиный, матовый, сат, на}.
В этом примере вам нужно установить (n) * (n-1) / 2 = 6 * 5/2 = 15 ребер.
Так что вам нужно O (n ^ 2) операцийпросто для того, чтобы установить грани в худшем случае ... независимо от того, сколько вам нужно сравнений или циклов, вы не можете улучшить это.