#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll a[100000],b[100000];
ll z[200000],l;
void sub()
{
for(int i = 0; i < l; i ++)
{
z[i] = a[i] - b[i];
}
for(int i = 0; i < l; i ++)
{
if(z[i] < 0)
{
z[i] += 10;
z[i+1] -= 1;
}
}
while(z[l] == 0)l--;
for(int i = l; i >= 0; i --)
{
cout << z[i];
}
cout << endl;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
string aa,bb;
cin >> aa >> bb;
ll n = aa.length();
ll m = bb.length();
string t;
ll flag = 0;
if(n == m)
{
if(aa < bb)
{
t = aa;
aa = bb;
bb = t;
flag = 1;
}
if(aa == bb)
{
cout << 0 << endl;
return 0;
}
}
else if(n < m)
{
t = aa;
aa = bb;
bb = t;
flag = 1;
}
n = aa.length();
m = bb.length();
for(int i = 0; i < n; i ++)a[i] = aa[n-i-1] - '0';
for(int i = 0; i < m; i ++)b[i] = bb[m-i-1] - '0';
l = max(n,m);
if(flag == 1)cout << '-';
sub();
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const ll maxn = 1e5 + 5;
const ll mod = 1000000007;
ll a[maxn],b[maxn],z[maxn];
string sub(string aa,string bb)
{
string c ="";
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(z,0,sizeof(z));
ll n = aa.length();
ll m = bb.length();
for(int i = 0; i < n; i ++)a[i] = aa[n - i - 1] - '0';
for(int i = 0; i < m; i ++)b[i] = bb[m - i - 1] - '0';
for(int i = 0; i < n; i ++)
{
z[i] = a[i] - b[i];
}
for(int i = 0; i < n; i ++)
{
if(z[i] < 0)
{
z[i + 1] -= 1;
z[i] += 10;
}
}
while(z[n] == 0)n--;
if(n <= 0)n = 0;
for(int i = n; i >= 0; i --)
{
c += (z[i] + '0');
}
return c;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
string aa,bb;
cin >> aa >> bb;
ll n = aa.length();
ll m = bb.length();
if(n < m)
{
swap(aa,bb);
cout << "-";
}
else if(n == m)
{
if(aa < bb)
{
swap(aa,bb);
cout << "-";
}
}
cout << sub(aa,bb) << endl;
return 0;
}