def add_two_polynomials(polynomial_1: list, polynomial_2: list) -> list:
    """
    This function expects two `polynomials` and returns a `polynomial` that contains
    their `sum`.

    :param polynomial_1: First polynomial
    :param polynomial_2: Second polynomial
    :return: A polynomial representing the sum of the two polynomials
    """
    # declaring the polynomial that will be returned (the sum)
    return_polynomial = []
    # storing the length of the shortest polynomial via the inbuilt min() function
    minimum_length = min(len(polynomial_1), len(polynomial_2))
    # adding the coefficients for every power of X up until the shortest one ends and appending the sum
    for k in range(minimum_length):
        return_polynomial.append(polynomial_1[k] + polynomial_2[k])
    # figuring out which polynomial is longer and appending all of the coefficients that are left
    if len(polynomial_1) > len(polynomial_2):
        # using the inbuilt function range() to iterate through the coefficients that are left
        for k in range(len(polynomial_2), len(polynomial_1)):
            return_polynomial.append(polynomial_1[k])
    else:
        # I intentionally checked both for '>' and '<' in order to rule out the case in which they are equal
        if len(polynomial_1) < len(polynomial_2):
            # using the inbuilt function range() to iterate through the coefficients that are left
            for k in range(len(polynomial_1), len(polynomial_2)):
                return_polynomial.append(polynomial_2[k])
    return return_polynomial