Finds max substring shared by all strings starting at position

    Args:

        words (list): list of unicode of all words to compare

        position (int): starting position in each word to begin analyzing
                        for substring

        _last_letter (unicode): last common letter, only for use
                                internally unless you really know what
                                you are doing

    Returns:
        unicode: max str common to all words

    Examples:
        .. code-block:: Python

            >>> max_substring(['aaaa', 'aaab', 'aaac'])
            'aaa'
            >>> max_substring(['abbb', 'bbbb', 'cbbb'], position=1)
            'bbb'
            >>> max_substring(['abc', 'bcd', 'cde'])
            ''

def max_substring(words, position=0, _last_letter=''):
    """Finds max substring shared by all strings starting at position

    Args:

        words (list): list of unicode of all words to compare

        position (int): starting position in each word to begin analyzing
                        for substring

        _last_letter (unicode): last common letter, only for use
                                internally unless you really know what
                                you are doing

    Returns:
        unicode: max str common to all words

    Examples:
        .. code-block:: Python

            >>> max_substring(['aaaa', 'aaab', 'aaac'])
            'aaa'
            >>> max_substring(['abbb', 'bbbb', 'cbbb'], position=1)
            'bbb'
            >>> max_substring(['abc', 'bcd', 'cde'])
            ''
    """

    # If end of word is reached, begin reconstructing the substring
    try:
        letter = [word[position] for word in words]
    except IndexError:
        return _last_letter

    # Recurse if position matches, else begin reconstructing the substring
    if all(l == letter[0] for l in letter) is True:
        _last_letter += max_substring(words, position=position + 1,
                                      _last_letter=letter[0])
        return _last_letter
    else:
        return _last_letter