```python
def stamp_table(dies: list) -> dict:
    table = {}
    for fragment, price in dies:
        if not isinstance(fragment, str) or not fragment:
            raise ValueError("a die fragment must be a non-empty string")
        if isinstance(price, bool) or not isinstance(price, int) or price <= 0:
            raise ValueError("a die price must be a positive integer")
        if fragment in table:
            raise ValueError("die listed twice: " + fragment)
        table[fragment] = price
    return table


def stamp_cover(label: str, dies: list) -> int:
    if not isinstance(label, str) or not label:
        raise ValueError("the label must be a non-empty string")
    
    dies_dict = stamp_table(dies)
    if label not in dies_dict:
        raise ValueError("the label cannot be spelled with the given dies")
    
    # Initialize the cost list
    costs = [float('inf')] * (len(label) + 1)
    costs[0] = 0
    
    # Fill the cost list
    for i in range(1, len(label) + 1):
        for die, price in dies_dict.items():
            j = i - len(die)
            if j >= 0 and costs[j] + price < costs[i]:
                costs[i] = costs[j] + price
    
    return costs[-1]
```