#include<iostream>
#include<vector>
using namespace std;
vector<int> mute(vector<int> A,vector<int> B) {
int t = 0;
vector<int> C;
for(int i = 0; i<A.size(); i++) {
int c;
c = A[i]-t;
t = 0;
if(i<B.size() && B[i]<=c) { //这里要注意有等号的
c = c-B[i];
t = 0;
} else if(i<B.size() && B[i]>c) {
t = 1;
c = c+t*10-B[i];
}
//如果这里c还是负数呢而且B当中已经没有位数了
if(c<0){
t = 1;
c = t*10+c;
}
//C[i] = c; //C的大小都不知道 怎么用下表运算符呢?这里应该用push_back
C.push_back(c);
}
//去掉最高位为零的情况但是最后一位不能去掉 i=0的时候代表的是最低位的一个数
int i = C.size() - 1;
while(C.back() == 0 && i) {
C.pop_back();
i--;
}
return C;
}
bool judge(vector<int> A,vector<int> B){
if(A.size() != B.size()) return A.size()>B.size();
else{
for(int i = A.size()-1;i>=0;i--){
if(A[i] != B[i]) return A[i]>B[i];
}
}
return true;
}
int main(){
string s1,s2;
vector<int> A,B;
vector<int> C;
cin>>s1>>s2;
for(int i = s1.size()-1;i>=0;i--) A.push_back(s1[i]-'0');
for(int i = s2.size()-1;i>=0;i--) B.push_back(s2[i]-'0');
if(judge(A,B))
{
C = mute(A,B);
}
else{
cout<<"-";
C = mute(B,A);
}
for(int i = C.size()-1;i>=0;i--) cout<<C[i];
return 0;
}