Вот этот код валидатор принял:
for (int k = 0; k < arr.size()-1; k++){
            if (arr.get(k+1).length() < arr.get(k).length()){
                System.out.println(k+1);
                break;
            }
        }
А этот ему не понравился:
for (int k = 0; k < arr.size(); k++){
            int l = k+1;
            if (arr.get(k).length() > arr.get(l).length()){
                System.out.println(l);
                break;
            }
        }
Может, на ночь глядя, у меня уже глаз замылен и я очевидного не вижу... Но пока реально не вижу ошибки. Разницу вижу только в моменте проверки следующего элемента и знак сравнения в другу сторону.