from typing import Dict


def table(services: Dict[str, str]) -> str:
    """
    Collect all services and their current otp as a table.
     
    :param services: Dictionary of service name to otp
    :return: the table representation of d as a string
    """
    # the longest service name or 10
    left_column = max([10, *map(len, services)])
    right_column = 8  # max number of digits specified by RFC

    header = f'{"service":<{left_column}} | {"otp":<{right_column}}'

    divider = "-" * len(header)

    body = [
        f"{service:<{left_column}} | {otp:{right_column}}"
        for service, otp in services.items()
    ]

    return "\n".join([header, divider, *body])