def number2string(n, alphabet='01'):
    """Compute the string representation of ``n`` in letters in ``alphabet``

    >>> number2string(0)
    '0'
    >>> number2string(1, '01')
    '1'
    >>> number2string(2, '01')
    '10'
    >>> number2string(3)
    '11'
    >>> number2string(4, '01')
    '100'

    >>> number2string(58, string.digits + 'abcdef')
    '3a'

    >>> number2string(-1, '01') #doctest: +ELLIPSIS
    Traceback (most recent call last):
    ...
    ValueError: -1 is not a natural number

    """
    base = len(alphabet)
    if n == 0:
        return alphabet[n]
    elif n < 0:
        raise ValueError('%d is not a natural number' % n)
    acc = []
    while n != 0:
        n, remainder = divmod(n, base)
        acc.append(alphabet[remainder])
    return ''.join(reversed(acc))
