```python
def selector_hits(values: list, selector: str) -> int:
    if not isinstance(values, list) or any(not isinstance(v, int) for v in values):
        raise ValueError("values must be a list of integers")
    if not isinstance(selector, str) or selector == "":
        raise ValueError("selector must be a non-empty string")
    
    hits = 0
    for term in selector.split(","):
        if "-" in term:
            low, high = map(int, term.split("-"))
            if low > high:
                raise ValueError("range low end must be less than or equal to high end")
            hits += len(range(low, high + 1))
        else:
            term = int(term)
            hits += 1 if term in values else 0
    return hits
```