Последние 2 условия не проходят. Решение выводит верное. Не пойму, где вкрячился. Помогите пожалуйста
package com.javarush.task.task22.task2209;
import java.nio.Buffer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.io.*;
import java.text.*;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = bufferedReader.readLine();
bufferedReader.close();
byte[] bytes = Files.readAllBytes(Paths.get(fileName));
String fileStuff = new String(bytes, StandardCharsets.UTF_8);
fileStuff = fileStuff.replaceAll("\\r\\n", " ");
String[] splinter = fileStuff.split(" ");
StringBuilder result = getLine(splinter);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
List<String> ara = Arrays.asList(words);
StringBuilder reZZult = new StringBuilder();
if (words != null) {
for (int i = 0; i < words.length; i++) {
reZZult = reZZult.append(words[i]);
ArrayList<String> araCopy = new ArrayList<>(ara);
araCopy.remove(i);
for (int j = 0; j < araCopy.size(); j++) {
String lastOfi = reZZult.substring(reZZult.length() - 1);
String firstOfj = String.valueOf(araCopy.get(j).charAt(0)).toLowerCase();
if (lastOfi.equals(firstOfj)) {
reZZult = reZZult.append(" " + araCopy.get(j));
araCopy.remove(j);
j = -1;
}
}
if (reZZult.toString().split(" ").length == words.length) {
return reZZult;
}else {
reZZult = new StringBuilder();
}
}
}
return reZZult;
}
}