#include <iostream>
#include <vector>
#include <string>
#include <set>
using namespace std;
vector<vector<int>> table;
set<string> setOfLCS;
int max(int a, int b)
{
return a>b?a:b;
}
string Reverser(string str)
{
//if #include<algorithm>
// reverse(str.begin(), str.end());
//return str;
int low = 0;
int high = str.length()-1;
char temp;
while(low < high)
{
temp = str[low];
str[low] = str[high];
str[high] = temp;
++low;
--high;
}
return str;
}
int LCS_table(int m, int n)
{
//table size should be (m+1) * (n+1)
table = vector<vector<int>>(m+1. vector<int>(n+1));
int i,j;
for(i=0; i<=m; ++i)
{
for(j=0; j<=n; ++j)
{
if(i==0 || j==0)
table[i][j] = 0;
else if(x[i-1] == y[j-1])
table[i][j] = table[i-1][j-1] + 1;
else
table[i][j] = max(table[i-1][j], table[i][j-1]);
}
}
return table[m][n];
}
int LCS(int m, int n)
{
//only two rows space enough
table = vector<vector<int>>(2, vector<int>(n+1));
int i, j;
for(i=0; i<=m; ++i)
{
k=i&1;
for(j=1; j<=n; ++j)
{
if(i==0 || j==0)
table[k][j] = 0;
else if(x[i-1] == y[j-1])
table[k][j] = table[k^1][j-1] + 1;
else
table[k][j] = max(table[k^1][j], table[k][j-1]);
}
}
return table[k][n];
}
void traceBack(int i, int j, string lcs_str)
{
while(i>0 && j>0)
{
if(x[i-1] == y[j-1])
{
lcs_str.push_back(x[i-1]);
--i;
--j;
}
else
{
if(table[i-1][j] > table[i][j-1])
--i;
else if(table[i-1][j] < table[i][j-1])
--j;
else
{
traceBack(i-1, j, lcs_str);
traceBack(i, j-1, lcs_str);
return;
}
}
}
setOfLCS.insert(Reverse(lcr_str));
}
int main()
{
int i,j;
string x, y;
cin >> x;
cin >> y;
int xlen = x.length();
int ylen = y.length();
//int length = LCS(xlen, ylen);
int length = LCS_table(xlen, ylen);
string str;
traceBack(m, n, str);
for(auto elem : setOfLCS)
cout << elem << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPiAKI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHNldD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8dmVjdG9yPGludD4+IHRhYmxlOwpzZXQ8c3RyaW5nPiBzZXRPZkxDUzsKCmludCBtYXgoaW50IGEsIGludCBiKQp7CglyZXR1cm4gYT5iP2E6YjsKfQoKc3RyaW5nIFJldmVyc2VyKHN0cmluZyBzdHIpCnsKCS8vaWYgI2luY2x1ZGU8YWxnb3JpdGhtPgoJLy8gcmV2ZXJzZShzdHIuYmVnaW4oKSwgc3RyLmVuZCgpKTsKCS8vcmV0dXJuIHN0cjsKCglpbnQgbG93ID0gMDsKCWludCBoaWdoID0gc3RyLmxlbmd0aCgpLTE7CgljaGFyIHRlbXA7Cgl3aGlsZShsb3cgPCBoaWdoKQoJewoJCXRlbXAgPSBzdHJbbG93XTsKCQlzdHJbbG93XSA9IHN0cltoaWdoXTsKCQlzdHJbaGlnaF0gPSB0ZW1wOwoJCSsrbG93OwoJCS0taGlnaDsJCgl9CglyZXR1cm4gc3RyOwp9CgppbnQgTENTX3RhYmxlKGludCBtLCBpbnQgbikKewoJLy90YWJsZSBzaXplIHNob3VsZCBiZSAobSsxKSAqIChuKzEpCgl0YWJsZSA9IHZlY3Rvcjx2ZWN0b3I8aW50Pj4obSsxLiB2ZWN0b3I8aW50PihuKzEpKTsKCWludCBpLGo7CgkKCWZvcihpPTA7IGk8PW07ICsraSkKCXsJCgkJZm9yKGo9MDsgajw9bjsgKytqKQoJCXsKCQkJaWYoaT09MCB8fCBqPT0wKQoJCQkJdGFibGVbaV1bal0gPSAwOwoJCQllbHNlIGlmKHhbaS0xXSA9PSB5W2otMV0pCgkJCQl0YWJsZVtpXVtqXSA9IHRhYmxlW2ktMV1bai0xXSArIDE7CgkJCWVsc2UKCQkJCXRhYmxlW2ldW2pdID0gbWF4KHRhYmxlW2ktMV1bal0sIHRhYmxlW2ldW2otMV0pOwoJCX0KCX0KCglyZXR1cm4gdGFibGVbbV1bbl07Cn0KCmludCBMQ1MoaW50IG0sIGludCBuKQp7CgkvL29ubHkgdHdvIHJvd3Mgc3BhY2UgZW5vdWdoCgl0YWJsZSA9IHZlY3Rvcjx2ZWN0b3I8aW50Pj4oMiwgdmVjdG9yPGludD4obisxKSk7CglpbnQgaSwgajsKCQoJZm9yKGk9MDsgaTw9bTsgKytpKQoJewoJCWs9aSYxOwoJCWZvcihqPTE7IGo8PW47ICsraikKCQl7CgkJCWlmKGk9PTAgfHwgaj09MCkKCQkJCXRhYmxlW2tdW2pdID0gMDsKCQkJZWxzZSBpZih4W2ktMV0gPT0geVtqLTFdKQoJCQkJdGFibGVba11bal0gPSB0YWJsZVtrXjFdW2otMV0gKyAxOwoJCQllbHNlCgkJCQl0YWJsZVtrXVtqXSA9IG1heCh0YWJsZVtrXjFdW2pdLCB0YWJsZVtrXVtqLTFdKTsJCQkKCQl9Cgl9CglyZXR1cm4gdGFibGVba11bbl07Cn0KCnZvaWQgdHJhY2VCYWNrKGludCBpLCBpbnQgaiwgc3RyaW5nIGxjc19zdHIpCnsKCXdoaWxlKGk+MCAmJiBqPjApCgl7CgkJaWYoeFtpLTFdID09IHlbai0xXSkKCQl7CgkJCWxjc19zdHIucHVzaF9iYWNrKHhbaS0xXSk7CgkJCS0taTsKCQkJLS1qOwoJCX0KCQllbHNlCgkJewoJCQlpZih0YWJsZVtpLTFdW2pdID4gdGFibGVbaV1bai0xXSkKCQkJCS0taTsKCQkJZWxzZSBpZih0YWJsZVtpLTFdW2pdIDwgdGFibGVbaV1bai0xXSkKCQkJCS0tajsKCQkJZWxzZQoJCQl7CgkJCQl0cmFjZUJhY2soaS0xLCBqLCBsY3Nfc3RyKTsKCQkJCXRyYWNlQmFjayhpLCBqLTEsIGxjc19zdHIpOwoJCQkJcmV0dXJuOwoJCQl9CgkJfQoJfQoKCXNldE9mTENTLmluc2VydChSZXZlcnNlKGxjcl9zdHIpKTsKfQoKaW50IG1haW4oKQp7CglpbnQgaSxqOwkKCglzdHJpbmcgeCwgeTsKCgljaW4gPj4geDsKCWNpbiA+PiB5OwoKCWludCB4bGVuID0geC5sZW5ndGgoKTsKCWludCB5bGVuID0geS5sZW5ndGgoKTsKCgkvL2ludCBsZW5ndGggPSBMQ1MoeGxlbiwgeWxlbik7CglpbnQgbGVuZ3RoID0gTENTX3RhYmxlKHhsZW4sIHlsZW4pOwoJCglzdHJpbmcgc3RyOwoJdHJhY2VCYWNrKG0sIG4sIHN0cik7Cglmb3IoYXV0byBlbGVtIDogc2V0T2ZMQ1MpCgkJY291dCA8PCBlbGVtIDw8IGVuZGw7Cn0=
prog.cpp:8:18: error: a space is required between consecutive right angle brackets (use '> >')
vector<vector<int>> table;
^~
> >
prog.cpp:39:27: error: a space is required between consecutive right angle brackets (use '> >')
table = vector<vector<int>>(m+1. vector<int>(n+1));
^~
> >
prog.cpp:39:35: error: expected ')'
table = vector<vector<int>>(m+1. vector<int>(n+1));
^
prog.cpp:39:29: note: to match this '('
table = vector<vector<int>>(m+1. vector<int>(n+1));
^
prog.cpp:48:12: error: use of undeclared identifier 'x'
else if(x[i-1] == y[j-1])
^
prog.cpp:48:22: error: use of undeclared identifier 'y'
else if(x[i-1] == y[j-1])
^
prog.cpp:61:27: error: a space is required between consecutive right angle brackets (use '> >')
table = vector<vector<int>>(2, vector<int>(n+1));
^~
> >
prog.cpp:66:3: error: use of undeclared identifier 'k'
k=i&1;
^
prog.cpp:70:11: error: use of undeclared identifier 'k'
table[k][j] = 0;
^
prog.cpp:71:12: error: use of undeclared identifier 'x'
else if(x[i-1] == y[j-1])
^
prog.cpp:71:22: error: use of undeclared identifier 'y'
else if(x[i-1] == y[j-1])
^
prog.cpp:72:11: error: use of undeclared identifier 'k'
table[k][j] = table[k^1][j-1] + 1;
^
prog.cpp:72:25: error: use of undeclared identifier 'k'
table[k][j] = table[k^1][j-1] + 1;
^
prog.cpp:74:11: error: use of undeclared identifier 'k'
table[k][j] = max(table[k^1][j], table[k][j-1]);
^
prog.cpp:74:29: error: use of undeclared identifier 'k'
table[k][j] = max(table[k^1][j], table[k][j-1]);
^
prog.cpp:74:44: error: use of undeclared identifier 'k'
table[k][j] = max(table[k^1][j], table[k][j-1]);
^
prog.cpp:77:15: error: use of undeclared identifier 'k'
return table[k][n];
^
prog.cpp:84:6: error: use of undeclared identifier 'x'
if(x[i-1] == y[j-1])
^
prog.cpp:84:16: error: use of undeclared identifier 'y'
if(x[i-1] == y[j-1])
^
prog.cpp:86:22: error: use of undeclared identifier 'x'
lcs_str.push_back(x[i-1]);
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.