Помогите плз!
package com.javarush.task.task22.task2209;
import java.io.*;
import java.lang.reflect.Array;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Составить цепочку слов Киев Нью-Йорк Амстердам Вена Мельбурн
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader path = new BufferedReader(new InputStreamReader(System.in));
BufferedReader reader = new BufferedReader(new FileReader(path.readLine()));
StringBuilder sb = new StringBuilder();
while (reader.ready()) {
sb.append(reader.readLine().trim()).append(" ");
}
String[] words = sb.toString().split(" ");
StringBuilder result = getLine(words);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if (words == null)return new StringBuilder("");
String newStr = null;
Random random = new Random();
int countWord = 0;
StringBuilder sb = new StringBuilder();
boolean aded = true;
while (aded) {
int idx = random.nextInt(words.length);
if (sb.lastIndexOf(words[idx]) == -1) {
sb.append(words[idx]);
++countWord;
if (countWord < words.length) {
sb.append(" ");
} else {
ArrayList<String> word = new ArrayList<>();
if (sb.substring(0, 1).toLowerCase().equals(sb.substring((sb.length() - 1)))) {
String[] string = sb.toString().split(" ");
for (int i = 0; i < string.length; i++) {
word.add(string[i]);
}
for (int i = 0; i < word.size(); i++) {
for (int j = i + 1; j < word.size(); j++) {
if (word.get(i).substring(word.get(i).length() - 1).equals(word.get(j).substring(0, 1).toLowerCase())) {
word.remove(i);
j = i;
} else break;
}
}
}
if (word.size() == 1) {
aded = false;
newStr = sb.toString();
}
countWord = 0;
sb = new StringBuilder();
}
}
}
return new StringBuilder(newStr);
}
}