```python
def take_back(values: list, target: int) -> int:
    """
    Returns the number of elements to take from the end of the list to reach or exceed the target sum.
    Returns -1 if the target cannot be reached.
    """
    if not values or target <= 0:
        return -1
    
    
    current_sum = 0
    for i in range(len(values) - 1, -1, -1):
        current_sum += values[i]
        if current_sum >= target:
            return len(values) - i - 1
    
    return -1
```