Здравствуйте. Возникла загвоздка с двумя последними пунктами.Не ясно, почему валик считает, что не все слова включаются в результирующую строку. Ну, также не ясно и про последний пункт. Подскажите, пожалуйста, что не так. Заранее спасибо.
public class Solution {
    public static void main(String[] args) throws IOException {
        //...
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        //String fileName = "F:\\JAVA\\Files\\IOEx\\file.txt";
        BufferedReader file = new BufferedReader(new FileReader(fileName));

        String s;
        ArrayList<String> list = new ArrayList<>();
        while ((s = file.readLine()) != null) {
            String[] mas = s.split(" ");
            Collections.addAll(list, mas);
        }
        String[] arr = list.toArray(new String[0]);
        StringBuilder result = getLine(arr);
        System.out.println(result.toString());
        file.close();
        reader.close();
    }

    public static StringBuilder getLine(String... words) {
        StringBuilder result = new StringBuilder();
        if (words.length == 0)
            return result;
        ArrayList<String> list = new ArrayList<>(Arrays.asList(words));
        result.append(list.get(0));
        list.remove(0);
        for (int k = list.size(); k > 0 ; k--) {
            String s1 = result.toString().toUpperCase();
            for (int i = 0; i < list.size(); i++) {
                if (s1.charAt(s1.length() - 1) == list.get(i).toUpperCase().charAt(0)) {
                    result.append(" " + list.get(i));
                    list.remove(i);
                    break;
                }
            }
        }
        return result;
    }
}