```python
def audit_ticket(ticket: str) -> str:
    if not isinstance(ticket, str):
        raise ValueError("Ticket must be a string")
    if len(ticket) != 10:
        return "shape"
    if not ticket.isupper():
        return "shape"
    if "-" not in ticket:
        return "shape"
    parts = ticket.split("-")
    if len(parts) != 3:
        return "shape"
    if not all(part.isnumeric() for part in parts[1:]):
        return "shape"
    if len(parts[2]) != 1:
        return "shape"
    letters = sum(ord(part) - ord('A') + 1 for part in parts[0])
    digits = sum(int(part) * (i + 1) for i, part in enumerate(parts[1]))
    total = letters + digits
    if total % 10 != int(parts[2]):
        return "check"
    return "ok"
```