#include<bits/stdc++.h>
using namespace std;
string T,S;
int M,N;
int dpmoze[200009],sufsum[19][200009],Sol[19];
bool moze[200009];
char c;
int main(){
  cin>>T>>S;
  N=T.size();
  M=S.size();
  T=" "+T;
  S=" "+S;
  for(int i=1; i<=M; i++)
    for(int j=N; j>=1; j--){
      sufsum[i][j]=sufsum[i][j+1];
      if(T[j]==S[i])sufsum[i][j]++;
    }
  for(int i=1; i<=N; i++)
    if(T[i]==S[1]){
      Sol[1]++;
      moze[i]=true;
    }
  for(int i=2; i<=M; i++){
    for(int j=1; j<=N; j++){
      dpmoze[j]=dpmoze[j-1];
      if(moze[j])dpmoze[j]++;
    }
    Sol[i]=Sol[i-1];
    for(int j=1; j<=N; j++){
      if(moze[j])
        Sol[i]=min(Sol[i],dpmoze[j-1]+sufsum[i][j+1]);
    }
    for(int j=1; j<=N; j++)
      if(dpmoze[j-1] and T[j]==S[i])moze[j]=true;
      else moze[j]=false;
  }
  cout<<Sol[M]<<endl;
  cout<<T.substr(1,N)<<endl;
  return 0;
}