Вроде выводит так как надо в консоль. Я вот может не так понял условие задачи?
Программа выводит именно уникальные значения.
package com.javarush.task.task18.task1804;
import java.io.FileInputStream;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
FileInputStream fis = new FileInputStream(sc.nextLine());
ArrayList <Integer> arr = new ArrayList<Integer>();
ArrayList <Integer> arr2 = new ArrayList<Integer>();
sc.close();
while (fis.available() > 0){
arr.add(fis.read());
}
fis.close();
Set<Integer> uniqueSet = new HashSet<Integer>(arr);
int min = Integer.MAX_VALUE;
for (Integer i : uniqueSet) {
arr2.add(i);
}
for (int i = 0; i < arr2.size(); i++) {
if(Collections.frequency(arr, arr2.get(i)) < min){
min = Collections.frequency(arr, arr2.get(i));
}
}
for (int i = 0; i < arr2.size() ; i++) {
if(Collections.frequency(arr, arr2.get(i)) == min){
System.out.print(arr.get(i) + " ");
}
}
}
}