Правка от 2 ноября 2017 года: решаю решаю-все равно не получается! Поможайте, друзья:
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 j = 0; j < list.size(); j++) //берем из изначального списка по 1 слову
        {

            String temp = list.get(j);
            String temp_LowerCase = temp.toLowerCase();
            int l = 1;


            for (int k = 0; k < j; k++)//проходимся по диапазону "ниже" эталона
            {

                String test = list.get(k);


                if ((test.equals(temp)) && (test.equals(temp_LowerCase))) //проверяем что проверяемая строка равна
                //эталону и не содержит заглавных букв
                {
                    l++;
                    result.put(test, l);


                } else if (test.equals(temp)) // если несмотря на то, что в строке могут быть заглавные-строки равны
                {
                    l++;
                    result.put(test, l);
                }
            }



                for (int z = j + 1; z < list.size(); z++)//проходимся по диапазону "выше" эталона
                {


                    String test2 = list.get(z);


                    if ((test2.equals(temp)) && (test2.equals(temp_LowerCase))) //проверяем что проверяемая строка равна
                    //эталону и не содержит заглавных букв
                    {
                        l++;
                        result.put(test2, l);


                    } else if (test2.equals(temp)) // если несмотря на то, что в строке могут быть заглавные-строки равны
                    {
                        l++;
                        result.put(test2, l);
                    }

                    l = 1; // приводим счетчик к первоначальному состоянию - чтобы считать количество совпадений
                          // по след. слову из первоначального списка


                }


            }

        return result;
        }

    }