```python
def digit_word(digit: int) -> str:
    """Return a single string representing the digit in English."""
    if not isinstance(digit, int):
        raise ValueError("Input must be an integer.")
    return {0: "zero", 1: "one", 2: "two", 3: "three", 4: "four",
            5: "five", 6: "six", 7: "seven", 8: "eight", 9: "nine"}[digit]


def digit_words(digits: str) -> str:
    """Return a string representing the sequence of digits in English."""
    if not isinstance(digits, str):
        raise ValueError("Input must be a string.")
    if len(digits) == 0:
        return ""
    
    result = []
    current_digit = digits[0]
    count = 1
    
    for i in range(1, len(digits)):
        if digits[i] == current_digit:
            count += 1
        else:
            result.append(digit_word(int(current_digit)) + " " * (count - 1))
            current_digit = digits[i]
            count = 1
    
    result.append(digit_word(int(current_digit)) + " " * (count - 1))
    
    return "".join(result)
```