#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1, s2;
bool flag[150] = { false };
getline(cin, s1);
getline(cin, s2);
int i, j = 0;
int count = 0;
for (i = 0; i < s1.length(); i++)
{
flag[int(s1[i])] = true;
if (s1[i] >= 'A' && s1[i] <= 'Z')
{
flag[int(s1[i] + 32)] = true;
}
}
for (i = 0; i < s2.length(); i++)
{
if (flag[int(s2[i])] == false)
{
if ((s2[i] >= 'A' && s2[i] <= 'Z') && flag[int(s2[i])] != true && s1.find('+') == string::npos)
{
if (flag[s2[int('+')]] != true)
{
cout << s2[i];
count=1;
}
}
if ((s2[i] < 'A' || s2[i] > 'Z') && flag[int(s2[i])] != true)
{
cout << s2[i]; count=1;
}
}
}
if (count == 0)
cout << endl;
}


#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<bool> f(256, true);
string s1, s2;
cin >> s1 >> s2;
for (auto c : s1)
{
if (isupper(c))
{
f[c] = false;
f[tolower(c)] = false;
}
else if (c == '+')
{
for (char a = 'A'; a <= 'Z'; a++)
f[a] = false;
}
else
{
f[c] = false;
}
}
for (auto c : s2) {
if (f[c])
cout << c;
}
return 0;
}
