Выхожу за пределы массива. Идея такая. Мы идем по массиву циклом и если длина строки меньше следующей, то записывает меньшую строку в конец списка. Затем мы идет по этому же списку и сравниваем строки с конца. Если строка меньше или равна, то выводи на экран.
public class Solution {
    public static void main(String[] args) throws Exception {
        ArrayList<String> list = new ArrayList<String>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        for (int i = 0; i < 5; i++) {
            list.add(reader.readLine());
        }
        for (int i = 0; i < list.size() - 1; i++) {
            if (list.get(i).length() < list.get(i + 1).length()) {
                list.add(list.get(i));
            }


        }
        for (int i = list.size(); i > 0; i--) {
            if (list.get(i).length() <= list.get(i - 1).length()) {
                System.out.println(list.get(i));


            }
            else break;
        }
    }
}
Ошибка:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
	at java.util.ArrayList.rangeCheck(ArrayList.java:657)
	at java.util.ArrayList.get(ArrayList.java:433)
	at com.javarush.task.task07.task0709.Solution.main(Solution.java:42)