#include <iostream>
#include <cstring>
using namespace std;
inline string odejmij(string a, string b){
//WYNIK WYJSCIOWY Z DODAWANIA
string wynik = "";
//DLUGOSC STRINGOW
int strAd, strBd;
//PRZENIESIENIE
int p = 0;
//WYROWNANIE LICZB
while(a.size() - b.size() > 0) b = "0" + b;
cout << a << ' ' << b << endl;
strAd = a.size() - 1;
strBd = b.size() - 1;
while(strAd >= 0 || strBd >= 0){
//buforA, buforB, wynik
int bufA = 0;
int bufB = 0;
int w = 0;
if(strAd >= 0) bufA = a[strAd] - 48; else bufA = 0;
if(strBd >= 0) bufB = b[strBd] - 48; else bufB = 0;
if((bufA - bufB - p ) < 0) { w = bufA - bufB - p + 10; p = 1; }
else if((bufA - bufB - p) == 0) { w = 0; p = 0; }
else {w = bufA - bufB - p; p = 0;}
wynik = "0" + wynik;
wynik[0] = 48 + w;
strAd--;
strBd--;
}
string wynikF = "";
//USUNIECIE ZER Z POCZATKU
int s = 0;
for(int i = 0; i < wynik.size(); i++){
if(wynik[i] == 48) s += 1;
else break;
}
for(int i = s; i < wynik.size(); i++){
wynikF += wynik[i];
}
if(wynikF.size() == 0) wynikF += 48;
return wynikF;
}
inline string NWD(string, string);
inline string wiekszy(string strA, string strB){
int dlA = strA.size();
int dlB = strB.size();
if(dlA > dlB) { return NWD(odejmij(strA, strB), strB); }
else if(dlB > dlA) { return NWD(odejmij(strB, strA), strA); }
else{
for(int i = 0; i < dlA; i++){
if(strA[i] > strB[i]) { return NWD(odejmij(strA, strB), strB);}
else if(strA[i] < strB[i]) { return NWD(odejmij(strB, strA), strA);}
}
}
}
inline string NWD(string a, string b){
if(a == b) return a;
else return wiekszy(a, b);
}
int main(){
ios_base::sync_with_stdio(NULL);
cin.tie(nullptr);
string strA, strB;
cin >> strA >> strB;
cout << odejmij(strA, strB);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAppbmxpbmUgc3RyaW5nIG9kZWptaWooc3RyaW5nIGEsIHN0cmluZyBiKXsKICAgIC8vV1lOSUsgV1lKU0NJT1dZIFogRE9EQVdBTklBCiAgICBzdHJpbmcgd3luaWsgPSAiIjsKIAogICAgLy9ETFVHT1NDIFNUUklOR09XCiAgICBpbnQgc3RyQWQsIHN0ckJkOwogCiAgICAvL1BSWkVOSUVTSUVOSUUKICAgIGludCBwID0gMDsKIAogICAgLy9XWVJPV05BTklFIExJQ1pCCiAgICB3aGlsZShhLnNpemUoKSAtIGIuc2l6ZSgpID4gMCkgYiA9ICIwIiArIGI7CiAKICAgIGNvdXQgPDwgYSA8PCAnICcgPDwgYiA8PCBlbmRsOwogCiAgICBzdHJBZCA9IGEuc2l6ZSgpIC0gMTsKICAgIHN0ckJkID0gYi5zaXplKCkgLSAxOwogCiAgICB3aGlsZShzdHJBZCA+PSAwIHx8IHN0ckJkID49IDApewogICAgICAgIC8vYnVmb3JBLCBidWZvckIsIHd5bmlrCiAgICAgICAgaW50IGJ1ZkEgPSAwOwogICAgICAgIGludCBidWZCID0gMDsKICAgICAgICBpbnQgdyA9IDA7CiAKICAgICAgICBpZihzdHJBZCA+PSAwKSBidWZBID0gYVtzdHJBZF0gLSA0ODsgZWxzZSBidWZBID0gMDsKICAgICAgICBpZihzdHJCZCA+PSAwKSBidWZCID0gYltzdHJCZF0gLSA0ODsgZWxzZSBidWZCID0gMDsKIAogICAgICAgIGlmKChidWZBIC0gYnVmQiAtIHAgKSA8IDApIHsgdyA9IGJ1ZkEgLSBidWZCIC0gcCArIDEwOyBwID0gMTsgfQogICAgICAgIGVsc2UgaWYoKGJ1ZkEgLSBidWZCIC0gcCkgPT0gMCkgeyB3ID0gMDsgcCA9IDA7IH0KICAgICAgICBlbHNlIHt3ID0gYnVmQSAtIGJ1ZkIgLSBwOyBwID0gMDt9CiAKICAgICAgICB3eW5payA9ICIwIiArIHd5bmlrOwogICAgICAgIHd5bmlrWzBdID0gNDggKyB3OwogCiAgICAgICAgc3RyQWQtLTsKICAgICAgICBzdHJCZC0tOwogICAgfQogCiAgICBzdHJpbmcgd3luaWtGID0gIiI7CiAKICAgIC8vVVNVTklFQ0lFIFpFUiBaIFBPQ1pBVEtVCiAgICBpbnQgcyA9IDA7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgd3luaWsuc2l6ZSgpOyBpKyspewogICAgICAgIGlmKHd5bmlrW2ldID09IDQ4KSBzICs9IDE7CiAgICAgICAgZWxzZSBicmVhazsKICAgIH0KIAogICAgZm9yKGludCBpID0gczsgaSA8IHd5bmlrLnNpemUoKTsgaSsrKXsKICAgICAgICB3eW5pa0YgKz0gd3luaWtbaV07CiAgICB9CiAKICAgIGlmKHd5bmlrRi5zaXplKCkgPT0gMCkgd3luaWtGICs9IDQ4OwogCiAgICByZXR1cm4gd3luaWtGOwp9CiAKaW5saW5lIHN0cmluZyBOV0Qoc3RyaW5nLCBzdHJpbmcpOwogCmlubGluZSBzdHJpbmcgd2lla3N6eShzdHJpbmcgc3RyQSwgc3RyaW5nIHN0ckIpewogICAgaW50IGRsQSA9IHN0ckEuc2l6ZSgpOwogICAgaW50IGRsQiA9IHN0ckIuc2l6ZSgpOwogCiAgICBpZihkbEEgPiBkbEIpIHsgcmV0dXJuIE5XRChvZGVqbWlqKHN0ckEsIHN0ckIpLCBzdHJCKTsgfQogICAgZWxzZSBpZihkbEIgPiBkbEEpIHsgcmV0dXJuIE5XRChvZGVqbWlqKHN0ckIsIHN0ckEpLCBzdHJBKTsgfQogICAgZWxzZXsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgZGxBOyBpKyspewogICAgICAgICAgICBpZihzdHJBW2ldID4gc3RyQltpXSkgeyByZXR1cm4gTldEKG9kZWptaWooc3RyQSwgc3RyQiksIHN0ckIpO30KICAgICAgICAgICAgZWxzZSBpZihzdHJBW2ldIDwgc3RyQltpXSkgeyByZXR1cm4gTldEKG9kZWptaWooc3RyQiwgc3RyQSksIHN0ckEpO30KICAgICAgICB9CiAgICB9Cn0KIAppbmxpbmUgc3RyaW5nIE5XRChzdHJpbmcgYSwgc3RyaW5nIGIpewogICAgaWYoYSA9PSBiKSByZXR1cm4gYTsKICAgIGVsc2UgcmV0dXJuIHdpZWtzenkoYSwgYik7Cn0KIAppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhOVUxMKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAKICAgIHN0cmluZyBzdHJBLCBzdHJCOwogICAgY2luID4+IHN0ckEgPj4gc3RyQjsKIAogICAgY291dCA8PCBvZGVqbWlqKHN0ckEsIHN0ckIpOwp9