#include <iostream>
#include <string>
using namespace std;
int main()
{
int n, m, z;
string a, b, c, d;
cin>>a; // Вводим строку A
cin>>b; // Вводим строку B
d = b; // Строку B будем хранить в переменной d
n = b.length(); // В переменной n храним длину строки B
m = a.length(); // В переменной m храним длину строки A
c = a.substr(m - n, n); // Создаём подстроку
if(a.find(b) == EOF) // Ищем в строке A строку B
{
for (int i = 1; i<=n && b != c; i++) // Удаляем символы в конце первой строки и начале второй, пока они не будут равны
{
b.erase(n - i,1);
c.erase(0, 1);
}
z = c.length(); // В переменной z храним длину подстроки
d.erase(0,z); // Удаляем из строки B элементы подстроки
cout << a + d; // Выводим такую строку, которая содержит в себе и A и B
}
else cout << a; // Выводим строку A
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSAKewoJaW50IG4sIG0sIHo7CglzdHJpbmcgYSwgYiwgYywgZDsKCWNpbj4+YTsgLy8g0JLQstC+0LTQuNC8INGB0YLRgNC+0LrRgyBBCgljaW4+PmI7IC8vINCS0LLQvtC00LjQvCDRgdGC0YDQvtC60YMgQgoJZCA9IGI7IC8vINCh0YLRgNC+0LrRgyBCINCx0YPQtNC10Lwg0YXRgNCw0L3QuNGC0Ywg0LIg0L/QtdGA0LXQvNC10L3QvdC+0LkgZAoJbiA9IGIubGVuZ3RoKCk7IC8vINCSINC/0LXRgNC10LzQtdC90L3QvtC5IG4g0YXRgNCw0L3QuNC8INC00LvQuNC90YMg0YHRgtGA0L7QutC4IEIKCW0gPSBhLmxlbmd0aCgpOyAvLyDQkiDQv9C10YDQtdC80LXQvdC90L7QuSBtINGF0YDQsNC90LjQvCDQtNC70LjQvdGDINGB0YLRgNC+0LrQuCBBCgljID0gYS5zdWJzdHIobSAtIG4sIG4pOyAvLyDQodC+0LfQtNCw0ZHQvCDQv9C+0LTRgdGC0YDQvtC60YMKCWlmKGEuZmluZChiKSA9PSBFT0YpIC8vINCY0YnQtdC8INCyINGB0YLRgNC+0LrQtSBBINGB0YLRgNC+0LrRgyBCCgl7CgkJZm9yIChpbnQgaSA9IDE7IGk8PW4gJiYgYiAhPSBjOyBpKyspIC8vINCj0LTQsNC70Y/QtdC8INGB0LjQvNCy0L7Qu9GLINCyINC60L7QvdGG0LUg0L/QtdGA0LLQvtC5INGB0YLRgNC+0LrQuCDQuCDQvdCw0YfQsNC70LUg0LLRgtC+0YDQvtC5LCDQv9C+0LrQsCDQvtC90Lgg0L3QtSDQsdGD0LTRg9GCINGA0LDQstC90YsKCQl7CgkJCWIuZXJhc2UobiAtIGksMSk7ICAKCQkJYy5lcmFzZSgwLCAxKTsKCQl9CgkJeiA9IGMubGVuZ3RoKCk7IC8vINCSINC/0LXRgNC10LzQtdC90L3QvtC5IHog0YXRgNCw0L3QuNC8INC00LvQuNC90YMg0L/QvtC00YHRgtGA0L7QutC4CgkJZC5lcmFzZSgwLHopOyAvLyDQo9C00LDQu9GP0LXQvCDQuNC3INGB0YLRgNC+0LrQuCBCINGN0LvQtdC80LXQvdGC0Ysg0L/QvtC00YHRgtGA0L7QutC4CgkJY291dCA8PCBhICsgZDsgLy8g0JLRi9Cy0L7QtNC40Lwg0YLQsNC60YPRjiDRgdGC0YDQvtC60YMsINC60L7RgtC+0YDQsNGPINGB0L7QtNC10YDQttC40YIg0LIg0YHQtdCx0LUg0LggQSDQuCBCCgl9CgllbHNlIGNvdXQgPDwgYTsgLy8g0JLRi9Cy0L7QtNC40Lwg0YHRgtGA0L7QutGDIEEKCXJldHVybiAwOwp9