```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("label must be a non-empty string")
    
    table = stamp_table(dies)
    
    # dp[i] represents the minimum cost to spell the prefix label[:i]
    # dp[0] = 0 (empty string costs 0)
    dp = [float('inf')] * (len(label) + 1)
    dp[0] = 0
    
    for i in range(1, len(label) + 1):
        for fragment, price in table.items():
            # Check if fragment matches the suffix of label[:i]
            if i >= len(fragment):
                prefix_len = i - len(fragment)
                if label[prefix_len:i] == fragment:
                    if dp[prefix_len] != float('inf'):
                        new_cost = dp[prefix_len] + price
                        if new_cost < dp[i]:
                            dp[i] = new_cost
    
    if dp[len(label)] == float('inf'):
        raise ValueError("no sequence of dies can spell the label")
    
    return dp[len(label)]
```