#include<bits/stdc++.h>
using namespace std;
string x,y;
bool jw,jww;
string bq(string s,int len)
{
while(s.length()<len)
{
s.insert(0,"0");
}
return s;
}
string mul(string s)
{
jw=0;
for(int i=s.length()-1;i>=0;i--)
{
if((s[i]-'0')*2>=10)
{
if(i==0)
{
s.insert(0," ");
s[0]='1';
if(jw)s[1]=(s[1]-'0')*2-9+'0';
else s[1]=(s[1]-'0')*2-10+'0';
}
else
{
if(jw)s[i]=(s[i]-'0')*2-9+'0';
else s[i]=(s[i]-'0')*2-10+'0';
jw=1;
}
}
else
{
if(jw)s[i]=(s[i]-'0')*2+1+'0';
else s[i]=(s[i]-'0')*2+'0';
jw=0;
}
}
return s;
}
string div(string s)
{
jw=0;
for(int i=0;i<s.length();i++)
{
if((s[i]-'0')%2==1)jww=1;
else jww=0;
if(jw)s[i]=(s[i]-'0'+10)/2+'0';
else s[i]=(s[i]-'0')/2+'0';
if(i==0&&s[i]=='0')
{
s.erase(0,1);
i--;
}
jw=jww;
}
return s;
}
string mis(string x,string y)
{
y=bq(y,x.length());
for(int i=x.length()-1;i>=0;i--)
{
if(x[i]<y[i])
{
x[i-1]--;
x[i]='9'+1+x[i]-y[i];
}
else x[i]=x[i]-y[i]+'0';
}
while(x[0]=='0')
{
x.erase(0,1);
}
return x;
}
string gcd(string a,string b)
{
if(a.length()<b.length()||(a.length()==b.length()&&a<b))swap(a,b);
if(a==b||b=="0")return a;
if((a[a.length()-1]-'0')%2==0&&(b[b.length()-1]-'0')%2==0)return mul(gcd(div(a),div(b)));
else if((a[a.length()-1]-'0')%2==0)return gcd(div(a),b);
else if((b[b.length()-1]-'0')%2==0)return gcd(a,div(b));
else return gcd(mis(a,b),b);
}
int main()
{
cin>>x>>y;
cout<<gcd(x,y);
return 0;
}
急求orz