Создал 2 файла, как в задаче, проверил - все ОК, результат идентичен. Но компилятору что-то не нравится. Какие варианты могут быть ввода у компилятора, что у него не работает - без понятия. Подскажите пожалуйста. Код прокомментировал. Вот что выдает программа в качестве результат своей работы. Результат идентичен с тем, что дали в качестве примера: "Тут был скрин, но по сколько JavaRush отображает картинку Через Жопу, что она на весь экран в дерьмовом качестве - её пришлось убрать, да бы сберечь глаза пользователей"
SAME строка1
REMOVED строка2
SAME строка3
REMOVED строка4
SAME строка5
ADDED строка0
SAME строка1
REMOVED строка2
SAME строка3
ADDED строка4
SAME строка5
REMOVED строка0
Код:
public static List<LineItem> lines = new ArrayList<LineItem>();

public static void main(String[] args) throws IOException {
    // считываем расположение 2х файлов
    BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
    String file1 = rd.readLine();
    String file2 = rd.readLine();
    rd.close();

    // Создаем листы и записываем в них значения файлов
    ArrayList<String> list1 = importfiles(file1);
    ArrayList<String> list2 = importfiles(file2);

    // Основная логика, заполняем lines правильными значениями
    joinTheFiles(list1, list2);

    // Проверка для меня (удаляю перед проверкой)
    for (LineItem item : lines) {
        System.out.println(item);
    }

}

public static ArrayList<String> importfiles(String file) throws IOException {
    ArrayList<String> list = new ArrayList<>();
    BufferedReader reader = new BufferedReader(new FileReader(file));
    while (reader.ready()) {
        list.add(reader.readLine());
    }
    reader.close();
    return list;
}

public static void joinTheFiles(ArrayList<String> list1, ArrayList<String> list2) {
    // Пока длина не одинковая - будет добавлять пустые строки в лист с наименьшем кол-вом
    while (list1.size() != list2.size()) {
        if (list1.size() < list2.size()) {
            list1.add("");
        } else {
            list2.add("");
        }
    }

    for (int i = 0; i < list1.size(); i++) {
        String clearLine1 = list1.get(i);
        String clearLine2 = list2.get(i);
        // сравниваю без пробелов. replaceAll - т.к. валидатор не знает что такое isBlank
        // результат у меня идентичный
        String line1 = clearLine1.replaceAll("\\s", "");
        String line2 = clearLine2.replaceAll("\\s", "");
        if (line1.equals(line2)) {   // если одинаковые - просто добавить
            lines.add(new LineItem(Type.SAME, clearLine1));
        } else {
            if (line1.isEmpty()) {   // если 1я пустая (а значит 2я нет) - добавлена новая строка
                lines.add(new LineItem(Type.ADDED, clearLine2));
            } else if (line2.isEmpty()) {   // если 2я пустая, значит 1 не пустая и строку удалили
                lines.add(new LineItem(Type.REMOVED, clearLine1));
            } else {
                System.out.println("Ни одна строка не является пустой");
            }
        }
    }
}

public static enum Type {
    ADDED,        //добавлена новая строка
    REMOVED,      //удалена строка
    SAME          //без изменений
}

public static class LineItem {
    public Type type;
    public String line;

    public LineItem(Type type, String line) {
        this.type = type;
        this.line = line;
    }

    // Проверка для меня (удаляю перед проверкой)
    @Override
    public String toString() {
        String part = null;
        if (type.equals(Type.ADDED)) part = "ADDED";
        if (type.equals(Type.REMOVED)) part = "REMOVED";
        if (type.equals(Type.SAME)) part = "SAME";
        return part + " " + line;
    }
}