def res_similarity(aa1,aa2):
    """
    Input: two amino acids.
    Output: similarity of the amino acid pair from the similarity matrix.

    The similarity matrix comes from Henikoff, S. and Henikoff, J.G. Amino acid
    substitution matrices from protein blocks. PNAS 1992 89(22):10915.
    The more similar two amino acids are, the better score they will give
    in the alignment. """


    similarity_matrix =[[9,-1,-1,-3,0,-3,-3,-3,-4,-3,-3,-3,-3,-1,-1,-1,-1,-2,-2,-2],
    [-1,4,1,-1,1,0,1,0,0,0,-1,-1,0,-1,-2,-2,-2,-2,-2,-3],
    [-1,1,5,-1,0,-2,0,-1,-1,-1,-2,-1,-1,-1,-1,-1,0,-2,-2,-2],
    [-3,-1,-1,7,-1,-2,-2,-1,-1,-1,-2,-2,-1,-2,-3,-3,-2,-4,-3,-4],
    [0,1,0,-1,4,0,-2,-2,-1,-1,-2,-1,-1,-1,-1,-1,0,-2,-2,-3],
    [-3,0,-2,-2,0,6,0,-1,-2,-2,-2,-2,-2,-3,-4,-4,-3,-3,-3,-2],
    [-3,1,0,-2,-2,0,6,1,0,0,1,0,0,-2,-3,-3,-3,-3,-2,-4],
    [-3,0,-1,-1,-2,-1,1,6,2,0,-1,-2,-1,-3,-3,-4,-3,-3,-3,-4],
    [-4,0,-1,-1,-1,-2,0,2,5,2,0,0,1,-2,-3,-3,-2,-3,-2,-3],
    [-3,0,-1,-1,-1,-2,0,0,2,5,0,1,1,0,-3,-2,-2,-3,-1,-2],
    [-3,-1,-2,-2,-2,-2,1,-1,0,0,8,0,-1,-2,-3,-3,-3,-1,2,-2],
    [-3,-1,-1,-2,-1,-2,0,-2,0,1,0,5,2,-1,-3,-2,-3,-3,-2,-3],
    [-3,0,-1,-1,-1,-2,0,-1,1,1,-1,2,5,-1,-3,-2,-2,-3,-2,-3],
    [-1,-1,-1,-2,-1,-3,-2,-3,-2,0,-2,-1,-1,5,1,2,1,0,-1,-1],
    [-1,-2,-1,-3,-1,-4,-3,-3,-3,-3,-3,-3,-3,1,4,2,3,0,-1,-3],
    [-1,-2,-1,-3,-1,-4,-3,-4,-3,-2,-3,-2,-2,2,2,4,1,0,-1,-2],
    [-1,-2,0,-2,0,-3,-3,-3,-2,-2,-3,-3,-2,1,3,1,4,-1,-1,-3],
    [-2,-2,-2,-4,-2,-3,-3,-3,-3,-3,-1,-3,-3,0,0,0,-1,6,3,1],
    [-2,-2,-2,-3,-2,-3,-2,-3,-2,-1,2,-2,-2,-1,-1,-1,-1,3,7,2],
    [-2,-3,-2,-4,-3,-2,-4,-4,-3,-2,-2,-3,-3,-1,-3,-2,-3,1,2,11]]
    aminoacids = ['CYS','SER','THR','PRO','ALA','GLY','ASN','ASP','GLU','GLN','HIS','ARG','LYS','MET','ILE','LEU','VAL','PHE','TYR','TRP']

    i = aminoacids.index(aa1)
    j = aminoacids.index(aa2)

    s = similarity_matrix[i][j]
    return s