# include <bits/stdc++.h>
# define ffor(i,name) \
for (auto i = name.begin (); i != name.end (); ++ i)
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
string s1, s2;
int n, m, a[10005], b[10005], tmp[10005], ans[10005], len;
bool big_cmp () {
if (n < m)
return 0;
if (n > m)
return 1;
for (int i = 0; i < n; ++ i) {
if (a[i] < b[i])
return 0;
if (a[i] > b[i])
return 1;
}
return 1;
}
void big_swap () {
if (big_cmp ())
return ;
for (int i = 0; i < n; ++ i)
tmp[i] = a[i];
for (int i = 0; i < m; ++ i)
a[i] = b[i];
for (int i = 0; i < n; ++ i)
b[i] = tmp[i];
swap (n, m);
return ;
}
void big_sub () {
for (int i = 0; i < m; ++ i) {
a[i] -= b[i];
if (a[i] < 0)
a[i] += 10, -- a[i + 1];
}
while (n && ! a[n - 1])
-- n;
return ;
}
void big_div (int& n, int a[]) {
for (int i = n - 1; ~ i; -- i) {
if (a[i] & 1)
a[i - 1] += 10;
a[i] /= 2;
}
while (n && ! a[n - 1])
-- n;
return ;
}
void big_mul () {
for (int i = 0; i < len; ++ i) {
ans[i] *= 2;
if (ans[i] > 9)
ans[i] -= 10, ++ ans[i + 1];
}
if (ans[len])
++ len;
return ;
}
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> s1 >> s2;
n = s1.size (), m = s2.size ();
for (int i = 0; i < n; ++ i)
a[n - i - 1] = s1[i] - '0';
for (int i = 0; i < m; ++ i)
b[m - i - 1] = s2[i] - '0';
big_swap ();
len = 1, ans[0] = 1;
while (m) {
if (a[0] & 1)
if (b[0] & 1)
big_sub ();
else
big_div (m, b);
else if (b[0] & 1)
big_div (n, a);
else
big_mul (), big_div (n, a), big_div (m, b);
big_swap ();
}
memset (tmp, 0, sizeof tmp);
for (int i = 0; i < n; ++ i)
for (int j = 0; j < len; ++ j)
tmp[i + j] += a[i] * ans[j];
len += n - 1;
for (int i = 0; i < len; ++ i)
tmp[i + 1] += tmp[i] / 10, tmp[i] %= 10;
if (tmp[len])
cout << tmp[len];
while (len --)
cout << tmp[len];
return 0;
}