#include<cstdio>
#include<string>
#include<vector>
using namespace std;
int main() {
int i;
vector<char> left;
vector<char> right;
char buffer1[100];
char buffer2[100];
scanf("%s", buffer1);
scanf("%s", buffer2);
string str1 = buffer1;
string str2 = buffer2;
string str1_1 = "";
string str1_2 = "";
//从.划分数
int flag = 0;
for (int i = 0; i < str1.size(); i++) {
if (str1[i] == '.') {
flag = 1;
continue;
}
if (flag == 0)
str1_1 += str1[i];
else if (flag == 1)
str1_2 += str1[i];
}
string str2_1 = "";
string str2_2 = "";
flag = 0;
for (int i = 0; i < str2.size(); i++) {
if (str2[i] == '.') {
flag = 1;
continue;
}
if (flag == 0)
str2_1 += str2[i];
else if (flag == 1)
str2_2 += str2[i];
}
//.之后的
int min = str1_2.size() < str2_2.size() ? str1_2.size() : str2_2.size();
for (int i = str1_2.size() - 1; i >= min; i--) {
right.push_back(str1_2[i]);
}
for (int i = str2_2.size() - 1; i >= min; i--) {
right.push_back(str2_2[i]);
}
flag = 0;
for (int i = min - 1; i >= 0; i--) {
char x = str1_2[i] + str2_2[i] + flag - '0';
if (x <= '9') {
right.push_back(x);
flag = 0;
} else {
right.push_back(x - 10);
flag = 1;
}
}
//.之前
min = str1_1.size() < str2_1.size() ? str1_1.size() : str2_1.size();
for (i = 0; i < min ; i++) {
char a = str1_1[str1_1.size() - i - 1] + str2_1[str2_1.size() - i - 1] + flag -
'0';
if (a <= '9') {
left.push_back(a);
flag = 0;
} else {
flag = 1;
left.push_back(a - 10);
}
}
if (flag == 1 && str1_1.empty() && str2_1.empty())
left.push_back('1');
while (i < str1_1.size()) {
left.push_back(str1_1[str1_1.size() - i - 1] + flag);
flag = 0;
i++;
}
while (i < str2_1.size()) {
left.push_back(str2_1[str2_1.size() - i - 1] + flag);
flag = 0;
i++;
}
/*for (i = left.size() - 1; i >= 0; i--)
printf("%c", left[i]);*/
//printf("\n%s %s", str2_1.c_str(), str2_2.c_str());
for (int i = left.size() - 1; i >= 0; i--) {
printf("%c", left[i]);
}
printf(".");
for (int i = right.size() - 1; i >= 0; i--) {
printf("%c", right[i]);
}
}