```python
from typing import List

def stamp_table(dies: List[List[str, int]]) -> dict:
    table = {}
    for fragment, price in dies:
        if not isinstance(fragment, str) or not fragment:
            raise ValueError("Fragment must be a non-empty string.")
        if not isinstance(price, int) or price <= 0:
            raise ValueError("Price must be a positive integer.")
        if fragment in table:
            raise ValueError(f"Fragment '{fragment}' listed twice.")
        table[fragment] = price
    return table

def stamp_cover(label: str, dies: List[List[str, int]]) -> int:
    if not isinstance(label, str) or not label:
        raise ValueError("Label must be a non-empty string.")
    
    table = stamp_table(dies)
    
    n = len(label)
    dp = [float('inf')] * (n + 1)
    dp[0] = 0
    
    for i in range(1, n + 1):
        for j in range(i):
            fragment = label[j:i]
            if fragment in table:
                dp[i] = min(dp[i], dp[j] + table[fragment])
    
    return dp[n] if dp[n] != float('inf') else -1
```