### Summary

When:
force_handlers=true
inlude_tasks is in loop and the included tasks contain "notify" handler 
ansible=2.14

then after execution gets completed, the error is raised:
ERROR! BUG: There seems to be a mismatch between tasks in PlayIterator and HostStates
instead of displaying PLAY RECAP

### Issue Type

Bug Report

### Component Name

!needs_collection_redirect strategy plugin linear.py

### Ansible Version

```console
$ ansible --version
ansible [core 2.14.1]
  config file = None
  configured module search path = ['/home/devel/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.10/site-packages/ansible
  ansible collection location = /home/devel/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.10.2 (main, Feb 22 2022, 10:03:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44.0.3)] (/usr/local/bin/python3)
  jinja version = 3.0.3
  libyaml = True
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
CONFIG_FILE() = None
```


### OS / Environment

Oracle Linux 7.9

### Steps to Reproduce
```console
$ find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
.
 |-bug.yml
 |-bug
 | |-handlers
 | | |-main.yml
 | |-tasks
 | | |-main.yml
 | | |-handler_3.yml
 | | |-connect_server.yml

$ cat bug.yml
---
- name: bug
  hosts: "all"
  gather_facts: false
  force_handlers: true
  become: false

  tasks:
    - include_role:
        name: bug

$ cat bug/tasks/main.yml
---
- name: add tasks in loop
  include_tasks: connect_server.yml
  loop: "{{ my_hosts[1:] }}"
  when: inventory_hostname == my_hosts[0]

$ cat bug/tasks/connect_server.yml
---
- name: command 3
  ansible.builtin.command: /bin/true
  notify: handler_3

$ cat bug/handlers/main.yml
---
- name: handler_3
  include_tasks: handler_3.yml
  loop: "{{ my_hosts[1:] }}"

$ cat bug/tasks/handler_3.yml
---
- name: Handler 3
  ansible.builtin.debug:
    msg: "Handler for {{ item }}"
```

### Expected Results
```console
# after updating bug.yml to force_handlers: false the expected result is achieved
$ ansible-playbook -u ansible --extra-vars '{"my_hosts":["server1", "server2"]}' -i server1,server2 bug.yml

PLAY [bug] *****************************************************************************************************************************************************

TASK [include_role : bug] **************************************************************************************************************************************

TASK [bug : add tasks in loop] *********************************************************************************************************************************
skipping: [server2] => (item=server2)
skipping: [server2]
included: /home/devel/test/bug/tasks/connect_server.yml for server1 => (item=server2)

TASK [bug : command 3] *****************************************************************************************************************************************
changed: [server1]

RUNNING HANDLER [bug : handler_3] ******************************************************************************************************************************
included: /home/devel/test/bug/tasks/handler_3.yml for server1 => (item=server2)

RUNNING HANDLER [bug : Handler 3] ******************************************************************************************************************************
ok: [server1] => {
    "msg": "Handler for server2"
}

PLAY RECAP *****************************************************************************************************************************************************
server1               : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
server2               : ok=0    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
```

### Actual Results

```console
$ ansible-playbook -u ansible --extra-vars '{"my_hosts":["server1", "server2"]}' -i server1,server2 bug.yml

PLAY [bug] *****************************************************************************************************************************************************

TASK [include_role : bug] **************************************************************************************************************************************

TASK [bug : add tasks in loop] *********************************************************************************************************************************
skipping: [server2] => (item=server2)
skipping: [server2]
included: /home/devel/test/bug/tasks/connect_server.yml for server1 => (item=server2)

TASK [bug : command 3] *****************************************************************************************************************************************
changed: [server1]

RUNNING HANDLER [bug : handler_3] ******************************************************************************************************************************
included: /home/devel/test/bug/tasks/handler_3.yml for server1 => (item=server2)

RUNNING HANDLER [bug : Handler 3] ******************************************************************************************************************************
ok: [server1] => {
    "msg": "Handler for server2"
}
ERROR! BUG: There seems to be a mismatch between tasks in PlayIterator and HostStates.
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
#
#
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
DOCUMENTATION = '''
    name: linear
    short_description: Executes tasks in a linear fashion
    description:
        - Task execution is in lockstep per host batch as defined by C(serial) (default all).
          Up to the fork limit of hosts will execute each task at the same time and then
          the next series of hosts until the batch is done, before going on to the next task.
    version_added: "2.0"
    notes:
     - This was the default Ansible behaviour before 'strategy plugins' were introduced in 2.0.
    author: Ansible Core Team
'''
from ansible import constants as C
from ansible.errors import AnsibleError, AnsibleAssertionError, AnsibleParserError
from ansible.executor.play_iterator import IteratingStates, FailedStates
from ansible.module_utils._text import to_text
from ansible.playbook.handler import Handler
from ansible.playbook.included_file import IncludedFile
from ansible.playbook.task import Task
from ansible.plugins.loader import action_loader
from ansible.plugins.strategy import StrategyBase
from ansible.template import Templar
from ansible.utils.display import Display
display = Display()
class StrategyModule(StrategyBase):
    def __init__(self, *args, **kwargs):