#include #include #include #include #include #include #include #include #include #include #define mkp make_pair #define mkt make_tuple #define rep(i,n) for(int i = 0; i < (n); ++i) #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; const ll MOD=1e9+7; template void chmin(T &a,const T &b){if(a>b) a=b;} template void chmax(T &a,const T &b){if(a>S; cin>>T; int N=S.size(); int M=T.size(); vector> back(M+1,vector (26,-1)); for(int i=0;i<=M;i++){ for(int j=0;j<26;j++){ if(i-1>=0) back[i][j]=back[i-1][j]; } if(i dp(N+1,-1); dp[N]=M; for(int i=N-1;i>=0;i--){ if(dp[i+1]==-1) continue; if(dp[i+1]==0){ dp[i]=-1; continue; } int pos=dp[i+1]-1; dp[i]=back[pos][S[i]-'a']; } if(dp[0]!=-1){ cout<<-1<> nxt(N+1,vector (26,N)); for(int i=N-1;i>=0;i--){ for(int j=0;j<26;j++){ nxt[i][j]=nxt[i+1][j]; } nxt[i][S[i]-'a']=i; } string ans=""; int now=0; int tar=0; while(now