#include<bits/stdc++.h>
using namespace std;
struct node{
int b,c;
}a[1000005];
string ch,sh;
int len1,len2,b[30],f[1005],tot,x;
bool cmp(node x,node y){
return x.b<y.b;
}
int main(){
//freopen("vlcs2.in","r",stdin);
//freopen("vlcs2.ans","w",stdout);
cin>>ch>>sh;
len1=ch.size();
len2=sh.size();
if(len2>len1){
swap(ch,sh);
swap(len2,len1);
}
for(int i=0;i<len1;i++){
a[i].b=ch[i]-96;
b[a[i].b]++;
}
for(int i=len2;i<len1;i++){
sh[i]='A';
}
for(int i=0;i<len1;i++){
if(sh[i]!='A'){
a[i].c=sh[i]-96;
if(b[a[i].c])b[a[i].c]--;
else a[i].c=0;
}
else a[i].c=0;
}
sort(a,a+len1,cmp);
for(int i=0;i<len1;i++){
if(a[i].c){
if(a[i].c>f[tot]){
f[++tot]=a[i].c;
}
else{
x=lower_bound(f+1,f+tot+1,a[i].c)-f;
f[x]=a[i].c;
}
}
}
cout<<tot<<endl;
return 0;
}
题目不需要知道,只要告诉我,为何这个代码会RE