#include <stdio.h>

int main()
{
    char str[2][301] = {0};
    int max_len = 0;
    int max_left = 0;
    for(int i = 0; i < 2; i++)
    {
        if(scanf("%s", str[i]) == EOF)
        {
            return -1;
        }
    }
    
    int len0 = strlen(str[0]);
    int len1 = strlen(str[1]);
    
    int size = 0;
    int str0_left;
    int str0_right;
    int str1_left;
    int str1_right;
    int left_stop;
    int right_stop;
    
    char* len_short = NULL;
    char* len_long = NULL;
    
    /* len_short 指向短字符串, len_long指向长字符串, 便于处理最长子串有相同,需要取短串中最先出现的情况 */
    if(len0 > len1)
    {
        len_short = str[1];
        len_long = str[0];
    }
    else
    {
        len_short = str[0];
        len_long = str[1];
    }
    
    len0 = strlen(len_short);
    len1 = strlen(len_long);
    
    for(int i = 0; i < strlen(len_short); i++)
    {
        for(int j = 0; j < strlen(len_long); j++)
        {
            if(len_short[i] == len_long[j])
            {
                str0_left = i - 1;
                str0_right = i + 1;
                str1_left = j - 1;
                str1_right = j + 1;
                left_stop = 0;
                right_stop = 0;
                size = 1;
                
                
                while(
                         (str0_left >= 0 && str1_left >= 0 && len_short[str0_left] == len_long[str1_left])
                      || (str0_right <= len0 && str1_right <= len1 && len_short[str0_right] == len_long[str1_right])
                      )
                {
                     int left_equals = 0;
                     int right_equals = 0;
                    
                    if(str0_left >= 0 && str1_left >= 0)
                    {
                        left_equals = (len_short[str0_left] == len_long[str1_left]) ? 1 : 0 ;
                        /* 左指针标识停止滑动 */
                        left_stop = left_equals;                      
                                               
                    }
                    if(str0_right < len0 && str1_right < len1)
                    {
                        right_equals = (len_short[str0_right] == len_long[str1_right]) ? 1 : 0 ;
                        /* 右指针标识停止滑动 */
                        right_stop = right_equals;                                  
                    }
                    
                     /* 左右字符均相同,累加2 */
                    if(left_equals && right_equals)
                    {
                        size += 2;
                    }
                    else
                    {
                        size++;
                    }
                    
                    if(left_stop)
                    {
                        str0_left--;
                        str1_left--;
                    }
                    
                    if(right_stop)
                    {
                        str0_right++;
                        str1_right++;
                    }             
                }
                
                if(size > max_len)
                {
//                     printf("size = %d, i = %d, str0_left = %d, str0_right = %d,  str1_left = %d, str1_right = %d \n", size, i, str0_left, str0_right, str1_left, str1_right);
                    // 左指针始终指向 实际位置的 上一位置 ,需加1
                    max_left = str0_left + 1;
                    max_len = size;
                }
            }
        }
    }
    for(int i = max_left; i < max_left + max_len; i++)
    {
        printf("%c", len_short[i]);
    }

    
    return 0;
}