Вывод правильный, но последний пункт не проходит.
public static void main(String[] args) throws IOException {
    ArrayList<String> list = new ArrayList<>();

    String fileName = null;
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
        fileName = reader.readLine();
    }

    //Path outputFilePath = Paths.get(fileName);
    //try(BufferedReader fileReader = Files.newBufferedReader(outputFilePath, Charset.forName("windows-1251"))) {
    try(BufferedReader fileReader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)))) {
        String line;
        while ((line = fileReader.readLine()) != null) {
            String[] words = line.split(" ");
            for (int i = 0; i < words.length; i++)
                list.add(words[i].trim());
        }
    }

    for(int i = 0; i < list.size(); i++) {
        String s1 = list.get(i);
        String s2 = new StringBuilder(s1).reverse().toString();

        for(int g = 0; g < list.size(); g++)
            if (g != i && s2.equals(list.get(g))){
                Pair p1 = new Pair(s1, s2);
                Pair p2 = new Pair(s2, s1);

                if (!result.contains(p1) && !result.contains(p2)) {
                    result.add(p1);
                    System.out.println(p1.toString());
                }
            }
    }
}