
#include<bits/stdc++.h>
using namespace std;
string s1,s2; //字符串表示高精度数
int a[210],b[210],c[210]; //转存至整数数组
int main(){
cin>>s1>>s2; //输入加数1和加数2
int len1,len2; //字符串长度
len1=s1.size();
len2=s2.size();
//逆序存储加数1至整数数组a
for(int i=0;i<=len1-1;i++){
a[i]=s1[len1-i-1]-'0';}
//逆序存储加数2至整数数组b
for(int i=0;i<=len2-1;i++){
b[i]=s2[len2-i-1]-'0';}
//取两个加数位数最大值len,是否满10进位用x表示
int len,x=0;
len=max(len1,len2);
//加数1和加数2,循环按位累加后转存至数组c,满10则进位1
for(int i=0;i<=len-1;i++){
c[i]=a[i]+b[i]+x;
if(c[i]>=10){ //满10则进位1
c[i]-=10; //当前位减10
x=1; //进位加1
}
else x=0;}
//如果循环结束后进位1(即最高位满10进1),则直接先输出1
if(x==1){
cout<<1;
for(int i=len-1;i>=0;i--){ //逆序输出保存和的数组c
cout<<c[i]; }
}
else{ //如果最高位不满10进1
//先剔除数组c尾部连续的0(即作为和的结果头部连续的0)
while(c[len-1]==0&&len-1>0){
len--;}
for(int i=len-1;i>=0;i--){ //逆序输出保存和的数组c
cout<<c[i]; }
}
return 0;
}

#include<bits/stdc++.h>
using namespace std;
string s1,s2; //字符串表示高精度数
int a[10090],b[10090],c[10090]; //转存至整数数组
int main(){
cin>>s1>>s2; //输入被减数s1和减数s2
int len1,len2; //字符串长度
len1=s1.size();
len2=s2.size();
if(len1<len2||(s1<s2&&len1==len2)){ //如果被减数<减数,输出负号,交换被减数和减数
cout<<"-";
swap(s1,s2);
len1=s1.size();
len2=s2.size();
}
for(int i=0;i<=len1-1;i++){
a[i]=s1[len1-i-1]-'0'; //逆序存储被减数s1至整数数组a
}
for(int i=0;i<=len2-1;i++){
b[i]=s2[len2-i-1]-'0'; //逆序存储减数s2至整数数组b
}
int len; //取被减数和减数的位数最大值len
len=max(len1,len2);
for(int i=0;i<=len-1;i++){ //被减数和减数,循环按位递减后转存至数组c
c[i]=a[i]-b[i];
if(c[i]<0){ //若为负则借位
c[i]+=10; //当前位加10
a[i+1]-=1; //上一位减1
}
}
while(c[len-1]==0&&len-1>0){ //先剔除数组c尾部连续的0(即作为差的结果头部连续的0)
len--;
}
for(int i=len-1;i>=0;i--){ //逆序输出保存差的数组c
cout<<c[i];
}
return 0;
}