using namespace std;

char x[1000], y[1000];
int a[1000], b[1000], c[1000];

// 把s中的大整数倒序存储到a数组中,个位在下标为1的位置
void zhuanhuan(char s[], int a[]) {
	int len = strlen(s);
	for (int i = 0; i < len; i++) {
		a[len - i] = s[i] - '0';
	}
	a[0] = len;
}

void output(int e[]) {
	for (int i = e[0]; i > 0; i--) {
		cout << e[i];
	}
	cout << endl;
}

void jia(int d[], int e[], int f[]) {
	int i = 1, x = 0;
	while (i <= d[0] || i <= e[0]) {
		f[i] = d[i] + e[i] + x;
		x = f[i] / 10;
		f[i] %= 10;
		i++;
	}
	f[0] = max(d[0], e[0]);
	if (x > 0) {
		f[0]++;
		f[f[0]] = x;
	}
}

int bijiao(int d[], int e[]) {
	if (d[0] > e[0]) return 1;
	if (d[0] < e[0]) return -1;
	// d[0] == e[0]
	for (int i = d[0]; i > 0; i--) {
		if (d[i] > e[i]) return 1;
		if (d[i] < e[i]) return -1;
	}
	return 0;
}

void jian(int d[], int e[], int f[]) {
	for (int i = 1; i <= d[0]; i++) {
		if (d[i] < e[i]) {
			d[i+1]--;
			d[i] += 10;
		}
		f[i] = d[i] - e[i];
	}
	// 处理前导0
	f[0] = d[0];
	while (f[0] > 1 && f[f[0]] == 0) {
		f[0]--;
	}
}

int main() {
	cin >> x >> y;
	
	zhuanhuan(x, a);
	zhuanhuan(y, b);
	
	if (bijiao(a, b) >= 0) {
		jian(a, b, c);
	} else {
		cout <<"-";
		jian(b, a, c);
	}
	
	output(c);
	
	return 0;
}