#include <iostream>
#include <string>
#include <cctype>
using namespace std;

int main() {
	string a, b;
	getline(cin, a);
	getline(cin, b);
	string a2, b2;
	for(auto i: a){
		if(isalpha(i)){
			a2.push_back(tolower(i)); //Избавляемся от всех знаков кроме букв и понижаем регистр.
		}
	}
	for(auto i: b){
		if(isalpha(i)){
			b2.push_back(tolower(i));
		}
	}
	if(a2==b2){
		cout << a2; //Если строки равны, сразу возвращаем значение одной из них.
		return 0;
	}
	string c;
	for(unsigned int i=0; i<a2.size(); i++){ //Сравниваем символы в строках.
		for(unsigned int j=0; j<b2.size(); j++){
			if(a2[i]==b2[j]){
				c.push_back(a2[i]);
				for(unsigned int k=i+1, t=j+1; (k<a2.size())&&(t<b2.size()); k++, t++){
					if(a2[k]==b2[t]){
						c.push_back(a2[k]);	//Те, которые совпали, записываем в новую строку.
					} else {
						break;
					}
				}
				c.push_back(' ');
			}
		}
	}
	unsigned int r=0, max=0; //В получившейся строке считаем, сколько букв в самом большом слове.
	string c2, maxstr;
	for(unsigned int i=0; i<c.size(); i++){
		if(c[i]!=' '){
			r++;
		} else {
			if(r>max){
				max=r;
			}
			r=0;
		}
	}
	for(unsigned int i=0; i<c.size(); i++){ //Ищем слова такой же длины и записываем их в строку для вывода черех пробел.
		if(c[i]!=' '){
			c2.push_back(c[i]);
		} else {
			if(c2.size()==max){
				maxstr+=c2+' ';
			}
			c2.clear();
		}
	}
	cout << maxstr <<endl;
	cout <<"c= " <<c <<endl;
	return 0;
}