Problem: You are given strings s and t. Find one longest string that is a subsequence of both s and t.

Constraints

* s and t are strings consisting of lowercase English letters.
* 1 \leq |s|, |t| \leq 3000

Input

Input is given from Standard Input in the following format:


s
t


Output

Print one longest string that is a subsequence of both s and t. If there are multiple such strings, any of them will be accepted.

Examples

Input

axyb
abyxb


Output

axb


Input

aa
xayaz


Output

aa


Input

a
z


Output




Input

abracadabra
avadakedavra


Output

aaadara

Solution (in CPP):

Solution:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 3025;
char s[MAXN], t[MAXN], ans[MAXN];
int dp[MAXN][MAXN];
int main(){
	scanf("%s", s + 1);
	scanf("%s", t + 1);
	int n = strlen(s + 1);
	int m = strlen(t + 1);
	for(int i = n; i >= 1; i--){
		for(int j = m; j >= 1; j--){
			if(s[i] == t[j]) dp[i][j] = dp[i + 1][j + 1] + 1;
			else dp[i][j] = max(dp[i][j + 1], dp[i + 1][j]);
		}
	}
	int l = 1, r = 1;
	while(l <= n && r <= m){
		if(s[l] == t[r]){
			printf("%c",s[l]);
			l++;
			r++;
		}else if(dp[l][r] == dp[l + 1][r]) l++;
		else r++;
	} 
	return 0;
}