#include <bits/stdc++.h> using namespace std;
int a[10000];
int aa[10000];
char kww[10000];
int main()
{
string s, t;
cin >> s >> t;
int sn=s.find(".");//sn即为小数点的下标,也为串s整数部分长度
int tn=t.find("."); //tn即为小数点的下标,也为串t整数部分长度
int i = s.size() - 1;
int j = t.size() - 1;
int sn2=i-sn;//为串s小数部分长度
int tn2=j-tn;//为串t小数部分长度
string s1=s.substr(0,sn);//为串s整数部分
string s2=s.substr(sn+1,sn2);//为串s小数部分
string t1=t.substr(0,tn);//为串t整数部分
string t2=t.substr(tn+1,tn2);//为串t小数部分
sn2=sn2-1;
tn2=tn2-1;
int kss;
if(sn2<=tn2)
{
kss=sn2;
for(int i=sn2+1;i<=tn2;i++){
kww[i]=t2[i];
}
}else{
kss=tn2;
for(int i=tn2+1;i<=sn2;i++){
kww[i]=s2[i];
}
}
int kss1=kss;
int kxx=max(tn2,sn2);
int bb=0;
int b = 0;
int k = 0;
while (kss>=0)
{
if (kss>=0) // 对应位相加
{
aa[k] = s2[kss] - '0' + t2[kss] - '0' + b;
kss--;
}
if (aa[k] >= 10) // 处理进位
{
b = 1;
aa[k] = aa[k] % 10;
}
else
{
b = 0;
}
k++;
}
int b2=0;
if (b == 1)
{
b2=1;
}else{
b2=0;
}
int k2 = 0;
sn--;
tn--;
while (sn >= 0 || tn >= 0)
{
if (sn >= 0 && tn >= 0)
{
a[k2] = s1[sn] - '0' + t1[tn] - '0' + b2;
sn--;
tn--;
}
else if (sn >= 0)
{
a[k2] = s1[sn] - '0' + b2;
sn--;
}
else
{
a[k2] = t1[tn] - '0' + b2;
tn--;
}
if (a[k2] >= 10) // 处理进位
{
b2 = 1;
a[k2] = a[k2] % 10;
}
else
{
b2 = 0;
}
k2++;
}
if (b2 == 1)
{
cout << 1;
}
for (int i = k2 - 1; i >= 0; i--)
{
cout << a[i]; //输出整数部分
}
cout<<'.';//输出小数点
for (int i = k-1; i >= 0; i--)
{
cout << aa[i]; //输出小数部分的前半部分
}
for (int i = kss1+1; i <= kxx; i++)
{
cout << kww[i]; //输出小数部分的后半部分
}
return 0;
}