Problem:
Score : 100 points

Problem Statement

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

Notes

A subsequence of a string x is the string obtained by removing zero or more characters from x and concatenating the remaining characters without changing the order.

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.

Sample Input 1

axyb
abyxb

Sample Output 1

axb

The answer is axb or ayb; either will be accepted.

Sample Input 2

aa
xayaz

Sample Output 2

aa

Sample Input 3

a
z

Sample Output 3

The answer is (an empty string).

Sample Input 4

abracadabra
avadakedavra

Sample Output 4

aaadara

Solution in JavaScript (node.js v5.12) (judge verdict: Wrong Answer)

'use strict';
(function(input){
  input=input.trim().split(/\n/);
  const s=input[0];
  const S=s.length;
  const t=input[1];
  const T=t.length;
  const dp=new Array(S+1).fill('場所取り').map(x=>new Array(T+1).fill(0));
  //console.log(dp);
  for(let i=0;i<S;i++){
    for(let j=0;j<T;j++){
      let cs=s[i];
      let ct=t[j];
      if(cs===ct){
        dp[i+1][j+1]=dp[i][j]+1;
      }else{
        dp[i+1][j+1]=Math.max(dp[i][j+1],dp[i+1][j]);
      }
    }
  }
  console.log(dp);
  var ans='';
  var I=S,J=T;
  while(I>0&&J>0){
    //console.log(I,J);
    if(dp[I][J]===dp[I][J-1])
      J--;
    else if(dp[I][J]===dp[I-1][J])
      I--;
    else{
      ans=s[I-1]+ans;
      I--;
      J--;
    }
  }
  console.log(ans);
})(require('fs').readFileSync('/dev/stdin','utf8'));