#include<bits/stdc++.h>
using namespace std;
int main(){
	//1.定义俩个string s1,s2;
	string s1,s2;
	char f='+';
	int p=0;
	//2.输入 s1,s2
	cin>>s1>>s2;
	//3.定义3个整形数组a[300] b[300] c[300]
	int a[500],b[500],c[500];
    if(s1.size()<s2.size()||(s1.size()==s2.size()&&s1<s2)){
        f='-';
        swap(s1,s2);
    } 
	//4.分别将 s1,s2逆序存入数组a 数组b
   //	4.1 循环i从s1.size()-1到0
  //	4.2      a[s1.size()-1-i]=s1[i]-'0'
  for(int i=0;i<s1.size();i++){
        a[s1.size()-1-i]=s1[i]-'0'; 
    }
      
    
  
//	4.3 循环i从s1.size()-1到0
//	4.4      b[s2.size()-1-i]=s2[i]-'0'
    for(int i=0;i<s2.size();i++){
        b[s2.size()-1-i]=s2[i]-'0'; 
    }


//	5.相减
//	5.1考虑谁大谁小,用大减小
//	5.2考虑结果是负数
	     for(int i=0;i<s2.size();i++){
        b[s2.size()-i-1]=s2[i]-'0'; 
      
    }
		//5.3求出int len=s1.size()
		int len=s1.size();
	
		 for(int i=0;i<len;i++){	//5.4循环len
	       	if(a[i]<b[i]) {	//5.4.1 判断要不要借位
               a[i]=a[i]+10;
               a[i+1]-=a[i+1]-1; 
			    
		    } 
		    c[i]=a[i]-b[i];
	    }   
	//	6.输出 
	//	6.1 先判断输出结果是否为负
	if(f=='-') cout<<'-';
		//6.2倒序输出
		for(int i=len-1;i>=0;i--){
			if(c[i]!=0){
				p=i;
				break;
			}
		}
		for(int i=p;i>=0;i--){
			cout<<c[i];
		}
		
		
		
		
		
return 0;		 
}

/**************************************************************
	Problem: 1269
	User: laichenxu
	Language: C++
	Result: Wrong Answer
****************************************************************/