
    Given a route identification code sequence, determine the maximum length of any symmetric delivery corridor that can be formed by selecting stops in their original order, where vehicles can travel in either direction with equal efficiency. The selected sequence of stops should read the same whether traversed from start to end or end to start, representing a bidirectional delivery path.
    

    
def lps(str):
    """
    Given a route identification code sequence, determine the maximum length of any symmetric delivery corridor that can be formed by selecting stops in their original order, where vehicles can travel in either direction with equal efficiency. The selected sequence of stops should read the same whether traversed from start to end or end to start, representing a bidirectional delivery path.
    

    """
def lps(str):
    """
    Given a route identification code sequence, determine the maximum length of any symmetric delivery corridor that can be formed by selecting stops in their original order, where vehicles can travel in either direction with equal efficiency. The selected sequence of stops should read the same whether traversed from start to end or end to start, representing a bidirectional delivery path.
    

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