Подскажите где может быть ошибка.
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader fr = new BufferedReader(new FileReader(reader.readLine()));
String txt;
String stroka="";
while ((txt=fr.readLine())!=null){
stroka+=txt+" ";
}
reader.close();
fr.close();
String[] words = stroka.split(" ");
//...
StringBuilder result = getLine(words);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
StringBuilder result = null;
ArrayList<String> st1 = new ArrayList<>();
ArrayList<String> st2 = new ArrayList<>();
int f = 0;
if (words.length==0) {
result = new StringBuilder("");
}
else {
for (int i = 0; i < words.length; i++) {
st1.add(words[i]);
}
while (st1.size()!= st2.size()) {
for (int i = f; i < st1.size(); i++) {
for (int j = 0; j < st1.size(); j++) {
if (compareWord(st1.get(i), st1.get(j)) != null) {
st2.add(st1.get(i));
st2.add(st1.get(j));
break;
}
}
if (st2.size() > 0) {
break;
}
}
for (int j=0; j<st1.size(); j++){
for (int i = 0; i < st1.size(); i++) {
if (!st2.contains(st1.get(i))) {
if (compareWord(st2.get(st2.size() - 1), st1.get(i)) != null) {
st2.add(st1.get(i));
}
}
}
}
if(st1.size()!=st2.size()){
st2.clear();
}
f++;
}
result = new StringBuilder(st2.get(0));
for (int i = 0; i < st2.size(); i++) {
if (i != 0) result.append(" " + st2.get(i));
}
}
return result;
}
public static String compareWord (String w1, String w2){
String x = w1.substring(w1.length() - 1);
String y = w2.substring(0, 1).toLowerCase(Locale.ROOT);
if (x.equals(y)) {
return w2;
}
else{
return null;
}
}
}