Прошу не советовать подстраивать программу под equalsIgnoreCase. Когда я решал задачу я не знал о таком методе. Но тем не менее придумал свое решение, и хочу чтобы его приняли если оно правильное. З.Ы. Условие задачи не понятно! С условием удаления строки "если строка содержит "bug" (в различных его вариациях bUg, BUG etc.)" cтрока (например) "bUgs" тоже подлежит удалению. Решение для такой интерпретации условия прилагаю непосредственно далее. После него идет мое решение если интерпретировать условие как "удалить строку если она равна "bug" (в различных его вариациях bUg, BUG etc.)".
package com.javarush.task.pro.task13.task1305;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;

/*
Найти и обезвредить
*/

public class Solution {

    public static void main(String[] args) {
        ArrayList<String> words = new ArrayList<>();
        words.add("Hello world!");
        words.add("Amigo");
        words.add("Elly");
        words.add("Kerry");
        words.add("Bug");
        words.add("bug");
        words.add("Easy ug");
        words.add("Risha");

        bug.add("BUG");
        bug.add("BUg");
        bug.add("BuG");
        bug.add("bUG");
        bug.add("Bug");
        bug.add("buG");
        bug.add("bUg");
        bug.add("bug");

        ArrayList<String> copyWordsFirst = new ArrayList<>(words);
        ArrayList<String> copyWordsSecond = new ArrayList<>(words);
        ArrayList<String> copyWordsThird = new ArrayList<>(words);

        removeBugWithFor(copyWordsFirst);
        removeBugWithWhile(copyWordsSecond);
        removeBugWithCopy(copyWordsThird);

        copyWordsFirst.forEach(System.out::println);
        String line = "_________________________";
        System.out.println(line);
        copyWordsSecond.forEach(System.out::println);
        System.out.println(line);
        copyWordsThird.forEach(System.out::println);
        System.out.println(line);
    }

    public static void removeBugWithFor(ArrayList<String> list) {
        for (int i = 0; i < list.size(); i++) {
            for (String str :
                    bug) {
                if (list.get(i).contains(str)) {
                    list.remove(i);
                    i--;
                    break;
                }
            }
        }
    }

    public static void removeBugWithWhile(ArrayList<String> list) {
        Iterator<String> itr = list.iterator();
        while (itr.hasNext()) {
            String nextString = itr.next();
            for (String str :
                    bug) {
                if (nextString.contains(str)) {
                    itr.remove();
                    break;
                }
            }
        }
    }

    public static void removeBugWithCopy(ArrayList<String> list) {
        ArrayList<String> listCopy = new ArrayList<>(list);
        for (String str :
                listCopy) {
            for (String string :
                    bug) {
                if (str.contains(string)) {
                    list.remove(str);
                    break;
                }
            }
        }
    }

    public static HashSet<String> bug = new HashSet<>();


}