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