#include<iostream>
#include<vector>
#include<string>
using namespace std;
typedef vector<int> ve;//用ve代替vector<int>,避免麻烦
bool jug(ve& A, ve& B)//判断A,B谁大谁小,A大与等于B返回true,反之返回false
{
if (A.size() > B.size()) return true;
else if (A.size() == B.size() && A[0] >= B[0]) return true;
else return false;
}
ve sub(ve& A, ve& B)
{
ve C;
int t = 0;
for (int i = 0; i < A.size(); i++)
{
t = A[i] - t;
while (i < B.size()) t -= B[i];
C.push_back((t + 10) % 10);
if (t < 0) t = 1;
else t = 0;
}
while (C.size() > 1 && C.back() == 0) C.pop_back();//判断高位是否有多余的0,有则删除
return C;
}
int main()
{
string sum1, sum2;//因为数据太大,所以用string定义来输入
cin >> sum1 >> sum2;
ve A, B;
//循环,将sum1,sum2中的值放入A,B中,倒着放入
for (int i = sum1.size() - 1; i >= 0; i--) A.push_back(sum1[i] - '0');
for (int i = sum2.size() - 1; i >= 0; i--) B.push_back(sum2[i] - '0');
ve res;
if (jug(A, B))//如果A大,则A在前,B在后,反之B在前,A在后,并输出负号(“-”)
res = sub(A, B);
else
{
res = sub(B, A);
cout << "-";
}
for (int i = res.size() - 1; i >= 0; i--)//倒着输出,因为储存是高位在后,低位在前
{
cout << res[i];
}
return 0;
}