
    Given a route identification code representing interconnected road segments, determine the longest possible bidirectional delivery path where vehicles can travel the same sequence of road segments in either direction with equal efficiency. The bidirectional path does not need to be continuous within the overall route but must maintain the same sequence when traversed from either end.
    

    
def lps(str):
    """
    Given a route identification code representing interconnected road segments, determine the longest possible bidirectional delivery path where vehicles can travel the same sequence of road segments in either direction with equal efficiency. The bidirectional path does not need to be continuous within the overall route but must maintain the same sequence when traversed from either end.
    

    """
def lps(str):
    """
    Given a route identification code representing interconnected road segments, determine the longest possible bidirectional delivery path where vehicles can travel the same sequence of road segments in either direction with equal efficiency. The bidirectional path does not need to be continuous within the overall route but must maintain the same sequence when traversed from either end.
    

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