```python
def slot_hits(keys: list, slots: int) -> int:
    if not isinstance(keys, list):
        raise ValueError("keys must be a list")
    if not isinstance(slots, int) or slots <= 0:
        raise ValueError("slots must be a positive integer")

    cache = [None] * slots
    hits = 0

    for key in keys:
        if not isinstance(key, int):
            raise ValueError("all keys must be integers")
        slot = abs(key % slots)
        if cache[slot] == key:
            hits += 1
        else:
            cache[slot] = key

    return hits
```