WORDS_PER_SECOND = 2.4
PADDING_SECONDS = 1.8
MIN_DURATION = 8.0
MAX_DURATION = 45.0


def compute_duration(fact_text: str) -> float:
    word_count = len(fact_text.split())
    duration = word_count / WORDS_PER_SECOND + PADDING_SECONDS
    return max(MIN_DURATION, min(MAX_DURATION, duration))
