# include <bits/stdc++.h>
using namespace std;
int wrong_BIN,wrong_3JZ;
int DEC_becoming_BIN(int n){
if(n<=1)
return 1;
return DEC_becoming_BIN(n/2)*10+(n%2);
}
int _3JZ_becoming_DEC(int n){
int ans=0,num,i=-1;
num=n;
while(num){
i++;
ans+=(num%10)*pow(3,i);
num/=10;
}
return ans;
}
string r_str(string s){
string str="";
int len=s.size();
for(int i=len-1;i>=0;i--)
str+=s[i];
return str;
}
int str_becoming_int(string s){
int ans=0,len=s.size();
for(int i=0;i<len;i++){
ans*=10;
ans+=s[i]-'0';
}
return ans;
}
int BIN_becoming_DEC(int n){
int ans=0,num=n,i=-1;
while(num){
i++;
ans+=(num%10)*pow(2,i);
num/=10;
}
return ans;
}
int DEC_becoming_3JZ(int n){
if(n<=2)
return n%3;
return DEC_becoming_3JZ(n/3)*10+(n%3);
}
string int_becoming_str(int n){
string ans="";
int num=n;
while(num){
ans+=char(num%10+'0');
num/=10;
}
return r_str(ans);
}
int main(){
cin>>wrong_BIN>>wrong_3JZ;
string str_wrong_BIN="",str_wrong_3JZ="";
while(wrong_BIN){
str_wrong_BIN+=char(wrong_BIN%10+'0');
wrong_BIN/=10;
}
while(wrong_3JZ){
str_wrong_3JZ+=char(wrong_3JZ%10+'0');
wrong_3JZ/=10;
}
int len_BIN=str_wrong_BIN.size(),len_3JZ=str_wrong_3JZ.size();
str_wrong_BIN=r_str(str_wrong_BIN);
str_wrong_3JZ=r_str(str_wrong_3JZ);
int len=max(len_BIN,len_3JZ);
string right_BIN;
for(int i=0;i<len_BIN;i++){
right_BIN=str_wrong_BIN;
right_BIN[i]=char((int(str_wrong_BIN[i]-'0')+1)%2+'0');
string right_3JZ=int_becoming_str(DEC_becoming_3JZ(BIN_becoming_DEC(str_becoming_int(right_BIN))));
string zero="";
int len_right_3JZ=right_3JZ.size();
for(int j=1;j<=abs(len_right_3JZ-len_3JZ);j++)
zero+="0";
if(len_right_3JZ<len_3JZ)
right_3JZ=zero+right_3JZ;
if(len_3JZ<len_right_3JZ)
str_wrong_3JZ=zero+str_wrong_3JZ;
int len=max(len_right_3JZ,len_3JZ),wrong_sum=0;
for(int j=0;j<len;j++)
if(str_wrong_3JZ[j]!=right_3JZ[j])
wrong_sum++;
if(wrong_sum==1){
cout<<_3JZ_becoming_DEC(str_becoming_int(right_3JZ));
return 0;
}
}
return 0;
}