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

/**
 Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации
 подаваемой на вход и на выходе показывала лишь те строчки, которые содержат слово передаваемое
 программе на вход в качестве аргумента.
 */
class Grep {

	public static List<String> arrays() throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		List<String> array = new ArrayList<>(); // diamond-оператор
		
		String s;
		while ((s = reader.readLine()) != null) { // присваиваем и проверяем в одной строчке, плюс защита от NullPointerException
			array.add(s.toLowerCase());
		}
    	reader.close(); // не забываем закрыть
		
		return array;
    }

	// используем более абстрактные типы
	public static List<String> method(String s, List<String> list) {
		for (int i = 0; i < list.size(); i++) {
			if (!list.get(i).contains(s)) {
				list.remove(i); // удаляем ненужный элемент, список смещается на пустое место
				i--; // для того, чтобы остаться на том же индексе в следующей итерации
			}
		}
		return list;
	}

	public static void main(String[] args) throws IOException {
		for (String s : method("двач", arrays())) {
			System.out.println(s);
		}
		// ещё можно в стиле Java 8
		//method("двач", arrays()).forEach(System.out::println);
	}
}
