#include <iostream>
#include <vector>
using namespace std;
#define PB push_back
typedef vector <int> big;
istream& operator >> (istream& stream, big& a){
string s; stream >> s;
for (int i=s.size()-1; i>=0; i--) a.PB(s[i]-'0');
return stream;
}
ostream& operator << (ostream& stream, big a){
for (int i = a.size()-1; i>=0;i--) stream << a[i];
return stream;
}
bool operator > (big a, big b){
if (a.size()>b.size()) return true;
if (a.size() < b.size()) return false;
for (int i=a.size()-1; i>=0; i--){
if (a[i]>b[i]) return true;
if (a[i]<b[i]) return false;
}
}
big operator +(big a, big b){
big c; int i, r=0;
for (i=0;i<a.size() or i<b.size();i++){
if (i<a.size()) r+=a[i];
if (i<b.size()) r+=b[i];
c.PB(r%10); r/=10;
}
if (r) c.PB(r);
return c;
}
big operator - (big a, big b){
big c; int i, r=0;
for (i=0; i<a.size(); i++){
r+=a[i];
if (i<b.size()) r-=b[i];
if (r<0) {
c.PB(r+10); r-=1;}
else {c.PB(r%10); r=0;}
}
while (c.size()>1 and c.back() ==0) c.pop_back() ;
return c;
}
int main () {
big a,b;
cin>>a>>b;
if (b>a){
cout<<"-";
swap (a,b);
}
cout <<a-b;
return 0;
}