```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("a label must be a non-empty string")
    if not dies:
        raise ValueError("no dies to press")
    
    table = stamp_table(dies)
    label_length = len(label)
    dp = [0] * (label_length + 1)
    
    for i in range(1, label_length + 1):
        dp[i] = dp[i - 1] + table[label[i - 1]]
        for j in range(i):
            if label[j] == label[i - 1]:
                dp[i] = min(dp[i], dp[j] + table[label[i - 1]])
    
    return dp[label_length]
```