#include<stdio.h>
#include<iostream>
#include<string>
#include<vector>

int main()
{
	std::string otv_tekst;
	std::string zabranjena_rec;
	
	//Svako pojavljivanje svakog karaktera iz zabranjene reci u otvorenom tekstu
	std::vector<int> pozicije[10];

	std::getline(std::cin, otv_tekst);
	std::getline(std::cin, zabranjena_rec);

	for (int i = 0; i < zabranjena_rec.size(); i++)
	{
		int poz = -1;
		while (true)
		{
			poz = otv_tekst.find(zabranjena_rec[i], poz + 1);
			if(poz != otv_tekst.npos)
				pozicije[i].push_back(poz);
			else
				break;
		}
	}

	bool reseno = false;
	//Neka slova su nebitna i u svakom slucaju ostaju na pocetku
	for (int i = 0; i < zabranjena_rec.size() - 1; i++)
	{
		while(true)
		{
			if (pozicije[i + 1].empty())
			{
				reseno = true;
				break;
			}
			if (pozicije[i + 1].front() < pozicije[i].front())
				pozicije[i + 1].erase(pozicije[i + 1].begin());
			else
				break;
		}
	}

	//Neka slova su nebitna i u svakom slucaju ostaju na kraju
	for (int i = zabranjena_rec.size() - 1; i > 0; i--)
	{
		while (true)
		{
			if (pozicije[i - 1].empty())
			{
				reseno = true;
				break;
			}
			if (pozicije[i - 1].back() > pozicije[i].back())
				pozicije[i - 1].erase(pozicije[i - 1].end() - 1);
			else
				break;
		}
	}

	std::vector<int> najmanji = pozicije[0];
	//Trazenje karaktera koji se najmanje puta mora menjati 
	for (int i = 1; i < zabranjena_rec.size(); i++)
	{
		if (pozicije[i].size() < najmanji.size())
		{
			najmanji = pozicije[i];
		}
	}

	//Konacno menjanje originalnih karaktera sa zvezdicama
	for (int i = 0; i < najmanji.size(); i++)
	{
		otv_tekst[najmanji[i]] = '*';
	}

	printf("%d\n", najmanji.size());
	printf(otv_tekst.c_str());
}