Detect gameobjects via radius [PROBLEM]

Hello, thank you for taking time. I’ve got a maybe not that simple question.
It’s about the radius and these damn Physics.OverlapSphere things. I’m just not
able to do it.

**Short Introduction: **
I’m making a “Settlers of Catan” and “Civilization” inspired Hex-Game with creating custom worlds and so on. I got to the units now. I’m fine with how you can send them to positions, you can select them, send them somewhere (needs still improvement, but that project is more a test than a try to make a game). But I came to a problem now. Of course I don’t want the player to be able to send his units anywhere, like to the end of the map, in one turn.
My idea of making the player able to send his unit only to neighbouring province was to create a radius around the unit. He is only able to be set somewere within a distance of say 10f. I actually don’t care for the number now, I want to know how to implement it. My script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BasicUnitScript : MonoBehaviour
{

    public Camera cam;

    Vector3 newPosition;
    public LayerMask seaTileMask;

    public HexagonWorldCreation worldScript;

    public bool unitSelected;
    public bool unitSelectable;

    // Start is called before the first frame update
    void Start()
    {
        unitSelected = false;
        unitSelectable = true;

        newPosition = transform.position;
    }

    // Update is called once per frame
    void Update()
    {

        int layerMask = 1 << 9;
        layerMask = ~layerMask;

        if (Input.GetMouseButtonDown(0))
        {
            Ray unitSelectionRay = cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(unitSelectionRay, out hit))
            {
                if ((hit.transform == this.gameObject.transform) && (unitSelectable == true))
                {
                    unitSelected = true;
                }
            }

        }

        if (Input.GetMouseButtonDown(1))
        {
            Ray unitMovementRay = cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit2;

            if (Physics.Raycast(unitMovementRay, out hit2))    // If something doens't work, check the 100!
            {
                if ((unitSelected == true) && (hit2.transform.tag != "SeaTile"))
                {

                    unitSelected = false;
                    unitSelectable = false;

                    newPosition = hit2.point;
                    transform.position = newPosition;
                    this.gameObject.transform.position = new Vector3(hit2.point.x, 18.7f, hit2.point.z);
                    
                }
            }

            Debug.Log("hit2.point: " + hit2.point + " transform.position:" + transform.position + " hit tag: " + hit2.transform.tag);
        }
    }
}

Could anyone please implement it for me, 'cause I got no idea. I looked the doc and the other threads up, but it didn’t worked. If you could, thank you!

Note: Please no layerMasks!

I hope this can help you

            //The distance between my target (player) and my transform (enemy)
                float distance = Vector2.Distance(target.position, transform.position);
            //If the distance is less than the detectionRange(detectionRange is a float)
                if (distance < detectionRange)
                {
                //Do something
                    Movement();
                }