### Summary

I'd expect it to take the input as a string literal, but if you put quotes in it, it will take whatever is inside of them, if passwords have characters that would be parsed, the whole string must be typed inside '' to work properly with BECOME

### Issue Type

Bug Report

### Component Name

become

### Ansible Version

```console
$ ansible --version
ansible [core 2.13.7]
  config file = None
  configured module search path = ['/home/desu/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.10/site-packages/ansible
  ansible collection location = /home/desu/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/lib/python-exec/python3.10/ansible
  python version = 3.10.9 (main, Dec 12 2022, 13:19:46) [GCC 11.3.0]
  jinja version = 3.1.2
  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
```


### OS / Environment

gentoo 17.1

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```- name: install nas kernel
  hosts: nas
  tasks:
    - name: copy kernel config
      become: yes
      become_method: sudo
      copy:
        src: "{{src_kernel_config_path}}"
        dest: "{{dst_kernel_config_path}}"
        owner: root
        group: root
        mode: u=rw,g=r,o=r
  vars:
    dst_kernel_config_path: "/usr/src/linux/.config"
    src_dir_path: "{{playbook_dir}}/../nas"
    src_kernel_path: "/usr/src/linux"
    src_kernel_config: "nas-selinux"
    src_kernel_config_path: "{{src_dir_path}}{{src_kernel_path}}/{{src_kernel_config}}.config"
```


### Expected Results

BECOME password:

PLAY [install nas kernel] *****************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************
[WARNING]: Platform linux on host nas is using the discovered Python interpreter at /usr/bin/python3.10, but future installation of another Python interpreter could change the meaning of
that path. See https://docs.ansible.com/ansible-core/2.13/reference_appendices/interpreter_discovery.html for more information.
ok: [nas]

TASK [copy kernel config] *****************************************************************************************************************************************************************
changed: [nas]

PLAY RECAP ********************************************************************************************************************************************************************************
nas                        : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

### Actual Results

```console
BECOME password:

PLAY [install nas kernel] *****************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************
[WARNING]: Platform linux on host nas is using the discovered Python interpreter at /usr/bin/python3.10, but future installation of another Python interpreter could change the meaning of
that path. See https://docs.ansible.com/ansible-core/2.13/reference_appendices/interpreter_discovery.html for more information.
ok: [nas]

TASK [copy kernel config] *****************************************************************************************************************************************************************
fatal: [nas]: FAILED! => {"msg": "Incorrect sudo password"}

PLAY RECAP ********************************************************************************************************************************************************************************
nas                        : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
if origin and os.path.isabs(origin) and os.path.exists(to_bytes(origin)):
        basedir = origin
    if value_type:
        value_type = value_type.lower()
    if value is not None:
        if value_type in ('boolean', 'bool'):
            value = boolean(value, strict=False)
        elif value_type in ('integer', 'int'):
            value = int(value)
        elif value_type == 'float':
            value = float(value)
        elif value_type == 'list':
            if isinstance(value, string_types):
                value = [unquote(x.strip()) for x in value.split(',')]
            elif not isinstance(value, Sequence):
                errmsg = 'list'
        elif value_type == 'none':
            if value == "None":
                value = None
            if value is not None:
                errmsg = 'None'
        elif value_type == 'path':
            if isinstance(value, string_types):
                value = resolve_path(value, basedir=basedir)
            else:
                errmsg = 'path'
        elif value_type in ('tmp', 'temppath', 'tmppath'):
            if isinstance(value, string_types):
                value = resolve_path(value, basedir=basedir)
                if not os.path.exists(value):