#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
vector<string> v;
string bigadd(string a, string b){
string c="";
int i = a.size()-1, j = b.size()-1, adv = 0;
while (i >= 0 && j >= 0){
c += to_string((a[i]-'0'+b[j]-'0'+adv)%10);
adv = (a[i--]-'0'+b[j--]-'0'+adv)/10;
}
while (i >= 0){
c += to_string((a[i]-'0'+adv)%10);
adv = (a[i--]-'0'+adv)/10;
}
while (j >= 0){
c += to_string((b[j]-'0'+adv)%10);
adv = (b[j--]-'0'+adv)/10;
}
if (adv) c += to_string(adv);
reverse(c.begin(), c.end());
return c;
}
void pre_do(string x){
v.push_back("0");
v.push_back(x);
int j = 2;
while (j <= 9){
string res = "";
int i = x.size()-1, adv = 0;
while (i >= 0){
res += to_string(((x[i]-'0')*j+adv)%10);
adv = ((x[i--]-'0')*j+adv)/10;
}
if (adv) res += to_string(adv);
reverse(res.begin(), res.end());
v.push_back(res);
j++;
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string a, b;
cin >> a >> b;
if (a.size() < b.size()) swap(a, b);
pre_do(a);
int i = b.size()-1;
string c = v[b[i--]-'0'], tmp;
int cnt = 1;
while (i >= 0){
string zero(cnt++, '0');
tmp = v[b[i--]-'0']+zero;
c = bigadd(c, tmp);
}
cout << c;
return 0;
}