```python

from typing import Optional


def stamp_table(dies: list) -> dict:
    table = {}
    for die in dies:
        fragment, price = die
        if not isinstance(fragment, str) or not fragment.strip():
            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}' is listed twice")
        table[fragment] = price
    return table


def stamp_cover(label: str, dies: list) -> int:
    if not isinstance(label, str) or not label.strip():
        raise ValueError("Label must be a non-empty string")

    table = stamp_table(dies)

    # dp[i] is the minimum cost to cover the first i characters of the label
    dp = [0] * (len(label) + 1)
    for i in range(1, len(label) + 1):
        dp[i] = float('inf')
        sub_cost = {'': 0}  # Subcosts to reach any suffix of 'label'
        for fragment, price in table.items():
            if label.startswith(fragment, i - len(fragment)):
                new_sub_cost = {**sub_cost}
                new_sub_cost[label[i:i + len(fragment)]] = min(dp[i - len(fragment)], sub_cost.get(label[i:i + len(fragment)], float('inf')))
                dp[i] = min(dp[i], price + new_sub_cost[fragment])
        for suffix in sub_cost:
            if label.startswith(suffix, i):
                dp[i] = min(dp[i], dp[i - len(suffix)])

    return dp[-1]
```