function distance(word1, word2) {
	if(word1.length !== word2.length) throw new Error("слова разной длины");
	return [...word1].reduce((m, v, i) => v !== word2[i] ? m + 1 : m, 0);
}
function* pairs(xs) {
	for(const [x, ...ys] of tails(xs))
		for(const y of xs)
			yield { pair: [x, y], distance: distance(x, y) };
}
function* tails(xs) {
	const a = [...xs];
	while(a.length) {
		yield [...a];
		a.shift();
	}
}
function findFurthestPair(sentence, wordLength) {
	const words = sentence.split(/[–—̶˗“”„ _\-.()'",!?:;\r\n\t]+/).filter(word => word.length === wordLength);
	let match = { pair: null, distance: -1 };
	for(const { pair, distance } of pairs(words)) {
		if(distance > match.distance)
			match = { pair, distance };
	}
	return match.pair;
}
var pair = findFurthestPair(`
	Помогите пожалуйста решить последние 2 задания, решил все кроме этих двух, только
	начинаю осваивать js, буду очень благодарен
	1. Напишите скрипт, доказывающий или проверяющий, что для множества натуральных чисел
	выполняется равенство: 1+2+...+n = n(n+1)/2, где n - любое натуральное число.
	2. Расстояние между двумя словами равной длины - количество букв, в которых различаются эти
	слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины.
`, 10);
alert(pair);