было изначально так (обратить внимание на параметры split() в строчке номер 32):
package com.javarush.task.task19.task1922;

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

/*
Ищем нужные строки
*/

public class Solution {
    public static List<String> words = new ArrayList<String>();

    static {
        words.add("файл");
        words.add("вид");
        words.add("В");
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String fileName = br.readLine();
        br.close();
        try (BufferedReader brf = new BufferedReader(new FileReader(fileName))) {
            while (brf.ready()) {
                int countMatches = 0;
                String fileLine = brf.readLine();
                for (String word : words) {
                    countMatches += fileLine.split("\\b" + word + "\\b").length - 1;
                    if (countMatches > 2) break;
                }
                if (countMatches == 2) {
                    System.out.println(fileLine);
                }
            }
        }
    }
}
но при это валидатор поругался и не пропустил со словами "учти, что в words может быть любое количество слов"