
    Given a string representation of medical scan data, develop an algorithm to identify the longest symmetrical pattern that could indicate bilateral anatomical structures or abnormalities. The symmetrical pattern can be formed by selecting characters from the scan data (not necessarily consecutive) that read the same forward and backward, and the algorithm should return the length of this longest symmetrical sequence.
    

    
def lps(str):
    """
    Given a string representation of medical scan data, develop an algorithm to identify the longest symmetrical pattern that could indicate bilateral anatomical structures or abnormalities. The symmetrical pattern can be formed by selecting characters from the scan data (not necessarily consecutive) that read the same forward and backward, and the algorithm should return the length of this longest symmetrical sequence.
    

    """
def lps(str):
    """
    Given a string representation of medical scan data, develop an algorithm to identify the longest symmetrical pattern that could indicate bilateral anatomical structures or abnormalities. The symmetrical pattern can be formed by selecting characters from the scan data (not necessarily consecutive) that read the same forward and backward, and the algorithm should return the length of this longest symmetrical sequence.
    

    """
    n = len(str)
    L = [[0 for x in range(n)] for x in range(n)]
    for i in range(n):
        L[i][i] = 1
    for cl in range(2, n + 1):
        for i in range(n - cl + 1):
            j = i + cl - 1
            if str[i] == str[j] and cl == 2:
                L[i][j] = 2
            elif str[i] == str[j]:
                L[i][j] = L[i + 1][j - 1] + 2
            else:
                L[i][j] = max(L[i][j - 1], L[i + 1][j])
    return L[0][n - 1]