task10.task1016 не проходит проверку, есть идеи?

Кто подскажет, что валидатору не нравится??
п.с.: да, понимаю, что можно сделать написание немного другим (через for each или frequency)… но мне банально непонятно, почему не проходит этот вариант…

Ввести с клавиатуры в список 20 слов. Нужно подсчитать количество одинаковых слов в списке. Результат нужно представить в виде словаря Map<string, integer="">, где первый параметр – уникальная строка, а второй – число, сколько раз данная строка встречалась в списке. Вывести содержимое словаря на экран. В тестах регистр (большая/маленькая буква) влияет на результат.

package com.javarush.task.task10.task1016;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/* 
Одинаковые слова в списке
*/
public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> words = new ArrayList<String>();
        for (int i = 0; i < 20; i++) {
            words.add(reader.readLine());
        }
        Map<String, Integer> map = countWords(words);
        for (Map.Entry<String, Integer> pair : map.entrySet()) {
            System.out.println(pair.getKey() + " " + pair.getValue());
        }
    }
    public static Map<String, Integer> countWords(ArrayList<String> list) {
        HashMap<String, Integer> result = new HashMap<String, Integer>();
        for (int i=0; i<list.size(); )
        {
            if (result.containsKey(list.get(i))) i++;
            else {
                int count=0;
                for (int j=i; j<list.size();j++)
                {
                    if(list.get(i).equals(list.get(j))) count++;
                }
                result.put(list.get(i), count);
            }
        }
        return result;
    }
}

level10.lesson11.bonus02 Почему не компилируеться на сервере?

Ніяк не можу зрозуміти, чому задача не компілюється на сервері.
package com.javarush.test.level10.lesson11.bonus02;

import java.io.*;
import java.util.HashMap;

/* Нужно добавить в программу новую функциональность
Задача: Программа вводит с клавиатуры пару (число и строку) и выводит их на экран.
Новая задача: Программа вводит с клавиатуры пары (число и строку), сохраняет их в HashMap.
Пустая строка – конец ввода данных. Числа могу повторяться. Строки всегда уникальны. Введенные данные не должны потеряться!
Затем программа выводит содержание HashMap на экран.

Пример ввода:
1
Мама
2
Рама
1
Мыла

Пример вывода:
1 Мыла
2 Рама
1 Мама
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        String key;
        int value;

        while (true) {
            String line = reader.readLine();
            if (line.isEmpty()) break;
            try
            {
                value = new Integer(line);
            } catch (NumberFormatException e) {
                break;
            }

            key = reader.readLine();
            if (key.isEmpty()) break;

            map.put(key, value);
        }

        for (HashMap.Entry<String, Integer> pair : map.entrySet()) {
            System.out.println(pair.getValue() + " " + pair.getKey());
        }
    }
}

У мене все компілюється і нормально працює.
Результати роботи
1
Мама
2
Рама
1
Мыла

2 Рама
1 Мама
1 Мыла

level10.lesson11.home05

package com.javarush.test.level10.lesson11.home05;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

/* Количество букв
Ввести с клавиатуры 10 строчек и подсчитать в них количество различных букв (для 33 букв алфавита).
Вывести результат на экран.
Пример вывода:
а 5
б 8
в 3
г 7
…
я 9
*/

public class Solution
{
    public static void main(String[] args)  throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        //алфавит
        ArrayList<Character> alphabet = new ArrayList<Character>();
        for(int i=0;i<32;i++)
        {
            alphabet.add( (char) ('а'+i));
        }
        alphabet.add(6,'ё');

        //ввод строк
        ArrayList<String> list = new ArrayList<String>();
        for(int i=0;i<10;i++)
        {
            String s = reader.readLine();
            list.add( s.toLowerCase());
        }

        ArrayList<Integer> number = new ArrayList<Integer>();
        for (int i = 0; i < 32; i++)
            number.add(0);

        for (int i = 0; i < list.size(); i++)
        {
            char[] m = list.get(i).toCharArray();
            for (int j1 = 0; j1 < alphabet.size(); j1++)
                for (int j2 = 0; j2 < m.length; j2++)
                    if (alphabet.get(j1).equals(m[j2]))
                        number.set(j1 ,number.get(j1) + 1);
        }

        for (int i = 0; i < number.size(); i++)
        {
            System.out.println(alphabet.get(i) + " " + number.get(i));
        }
    }
}


Проходит тест, но сервер не принимает, в чем может быть проблема?

level10.lesson11.home09

/* Одинаковые слова в списке
Ввести с клавиатуры в список 20 слов. Нужно подсчитать количество одинаковых слов в списке. Результат нужно представить в виде словаря Map<String, Integer>, где первый параметр – уникальная строка, а второй – число, сколько раз данная строка встречалась в списке.
Вывести содержимое словаря на экран.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        ArrayList<String> words = new ArrayList<String>();
        for (int i = 0; i < 20; i++)
        {
            words.add(reader.readLine());
        }

        Map<String, Integer> map = countWords(words);

        for (Map.Entry<String, Integer> pair : map.entrySet())
        {
            System.out.println(pair.getKey() + " " + pair.getValue());
        }
    }

    public static Map<String, Integer> countWords(ArrayList<String> list)
    {
        HashMap<String, Integer> result = new HashMap<String, Integer>();

        for (String x : list)
        {
            boolean isExist = false;
            for (Map.Entry<String, Integer> pair : result.entrySet())
            {
                if (pair.getKey().equals(x)){
                    result.replace(pair.getKey(), pair.getValue() + 1);
                    isExist = true;
                }

            }
            if (!isExist)
            {
                result.put(x, 1);
            }
        }


        return result;
    }

}


Код работает, считает правильно, но не компилируется на сервере. Что не так?