Доброго времени суток. При попытке отправить решение задачи - с сервера приходит сообщение "Программа работала слишком долго и была закрыта". Задачу проверял в IDEA - работает нормально. Подскажите пожалуйста - что я не учел.
package com.javarush.task.task19.task1916;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/*
Отслеживаем изменения
*/

public class Solution {
    public static List<LineItem> lines = new ArrayList<LineItem>();

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedReader fileReader1 = new BufferedReader(new FileReader(reader.readLine()));
        BufferedReader fileReader2 = new BufferedReader(new FileReader(reader.readLine()));
        reader.close();

        ArrayList<String> list1 = new ArrayList<>();
        ArrayList<String> list2 = new ArrayList<>();

        String s = null;
        while((s = fileReader1.readLine()) != null) list1.add(s);
        fileReader1.close();

        while((s = fileReader2.readLine()) != null) list2.add(s);
        fileReader2.close();

        for(int i = 0, j = 0; i < list1.size() || j < list2.size(); ) {
            String f1 = list1.get(i);
            String f2 = list2.get(j);
            if(f1.equals(f2)) {
                lines.add(new LineItem(Type.SAME, f1));
                i = i + 1 < list1.size() ? i + 1 : i;
                j = j + 1 < list1.size() ? j + 1 : j;
            } else if(i + 1 < list1.size() && list1.get(i + 1).equals(f2)) {
                lines.add(new LineItem(Type.REMOVED, f1));
                i++;
            } else {
                lines.add(new LineItem(Type.ADDED, f2));
                if(j + 1 < list2.size()) j++;
                else break;
            }
        }

    }

    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;
        }
    }
}