#include <bits/stdc++.h>

#define xx first
#define yy second
#define lb lower_bound
#define ub upper_bound
#define bs binary_search
#define mp make_pair
#define pb push_back
#define popb pop_back

using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef string str;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAX=3e5+3;
str t, s;
int mini=INT_MAX, cr, sz;
int dp[MAX][10];
int cnt[257];
int scnt[257];
pii ord[11];

bool cmp(pii x, pii y){
    if(x.xx>=y.xx) return 1;
    else return 0;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    cin >> t >> s;
    for(int i=0;i<s.size();++i) if(s[i]==t[0]) dp[0][i]=1;
    for(int i=1;i<t.size();++i){
        for(int j=0;j<s.size();++j){
            if(t[i]!=s[j]){
                dp[i][j]=dp[i-1][j];
                continue;
            }
            if(j==0) dp[i][j]=dp[i-1][j]+1;
            else{
                //if(dp[i-1][j-1]>=dp[i-1][j]+1 && j==s.size()-1) t[i]='*';
                dp[i][j]=min(dp[i-1][j-1], dp[i-1][j]+1);
            }
        }
    }
    for(int i=0;i<s.size();++i){scnt[s[i]]++; cnt[s[i]]--;}
    for(int i=0;i<s.size();++i) if(scnt[s[i]]!=-1){ord[sz++]={scnt[s[i]], s[i]}; scnt[s[i]]=-1;}
    sort(ord, ord+sz, cmp);
    //for(int i=0;i<sz;++i) cout << ord[i].yy << " ";
    //cout << '\n';
    for(int i=0;i<t.size();++i) cnt[int(t[i])]++;
    for(int i=0;i<sz;++i){
        if(mini>cnt[ord[i].yy]){
            mini=cnt[ord[i].yy];
            cr=ord[i].yy;
        }
    }
    //cout << char(cr) << "\n";
    int kur=dp[t.size()-1][s.size()-1];
    for(int i=t.size()-1;i>=0;--i){
        if(kur==0) break;
        if(t[i]==cr){
            t[i]='*'; --kur;
        }
    }
    cout << dp[t.size()-1][s.size()-1] << '\n' << t << '\n';

    return 0;
}
/// bumbadbadbbbannrpbaaoaoabdoaodddmadbadd
/// badd