Мне не понятно. Помогите пожалуйста
package com.javarush.task.task18.task1804;
import java.io.FileInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
/*
Самые редкие байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
FileInputStream inputStream = new FileInputStream(fileName);
ArrayList<Integer> listOfBytes = new ArrayList<>();
while(inputStream.available() > 0) {
listOfBytes.add(inputStream.read());
}
inputStream.close();
//нашел минимальнок количество
int count, minCount = Integer.MAX_VALUE;
for(int i = 0; i < listOfBytes.size(); i ++) {
count = 0;
for(int j = 0; i < listOfBytes.size(); j++) {
if(listOfBytes.get(i).equals(listOfBytes.get(j) )) {
count++;
}
}
if(count < minCount)
minCount = count;
}
ArrayList<Integer> requiredList = new ArrayList<>();
for(int i = 0; i < listOfBytes.size(); i ++) {
count = 0;
for(int j = 0; j < listOfBytes.size(); j++) {
if(listOfBytes.get(i).equals(listOfBytes.get(j) )) {
count++;
}
}
if((count == minCount) && (!requiredList.contains(listOfBytes.get(i))))
requiredList.add(listOfBytes.get(i));
}
for(Integer bytes : requiredList) {
System.out.print(bytes + " ");
}
}
}