"Считаем слово" Почему не принимает?

Какой-то ад. Код выполняет задачу при любых условиях, валидацию не проходит. Задача была решена разными способами, ниже самый простой вариант, где меньше возможностей для ошибки.

com.javarush.task.task19.task1907;
«Считаем слово»
Считать с консоли имя файла.
Файл содержит слова, разделенные знаками препинания.
Вывести в консоль количество слов «world«, которые встречаются в файле.


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {

    public static void main(String[] args) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        FileReader fileReader = new FileReader(reader.readLine());
        BufferedReader bufferedFileReader = new BufferedReader(fileReader);

        int count = 0;

        while (bufferedFileReader.ready()){

            String text = bufferedFileReader.readLine();
            text = text.toLowerCase();
            text = text.replaceAll("\\p{P}"," ");
            String[] mas = text.split(" ");

            for (int i=0;i<mas.length;i++){
                if ("world".equals(mas[i]))count++;
            }
        }

        reader.close();
        fileReader.close();
        bufferedFileReader.close();

        System.out.println(count);


Логика следующая:
1. считываем из файла строку
2. переводим в нижний регистр (на всякий. но и без этого не проходит)
3. заменяем всю пунктуацию на пробелы
4. по пробелам разбиваем строку текста на массив
5. подсчитываем количество совпадений
6. если есть ещё строка, повторяем пункты с 1 по 5
7. закрываем потоки и выводим количество совпадений

Тестовый файл:
«World? world ,world, world.world!world world
world»

Результат: 8

Где я ошибся?