
    Given a transaction identifier sequence used in loan applications, determine the length of the longest symmetrical pattern that appears in order (not necessarily consecutive) within the sequence, where a symmetrical pattern reads the same forwards and backwards. This pattern length serves as a key metric in the bank's risk assessment algorithm to identify potential systematic transaction anomalies.
    

    
def lps(str):
    """
    Given a transaction identifier sequence used in loan applications, determine the length of the longest symmetrical pattern that appears in order (not necessarily consecutive) within the sequence, where a symmetrical pattern reads the same forwards and backwards. This pattern length serves as a key metric in the bank's risk assessment algorithm to identify potential systematic transaction anomalies.
    

    """
def lps(str):
    """
    Given a transaction identifier sequence used in loan applications, determine the length of the longest symmetrical pattern that appears in order (not necessarily consecutive) within the sequence, where a symmetrical pattern reads the same forwards and backwards. This pattern length serves as a key metric in the bank's risk assessment algorithm to identify potential systematic transaction anomalies.
    

    """
    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]