CONST MAX = 32001;
fi = 'UC.INP';
fo = 'UC.OUT';
type numArray = array[1..MAX] of shortint;
var a, b : numArray;
n, m : integer;
f : text;
procedure doc;
var x : char;
i, so, code : integer;
begin
assign(f, fi); reset(f);
readln(f, n, m);
for i:=1 to MAX do begin a[i]:=0; b[i]:=0; end;
for i:=n downto 1 do
begin
read(f, x);
val(x, so, code);
a[i] := so;
end;
readln(f);
for i:=m downto 1 do
begin
read(f, x);
val(x, so, code);
b[i] := so;
end;
close(f);
end;
function compare(a: numArray; na: integer; b: numArray; nb: integer) : shortint;
var i : integer;
begin
if (na < nb) then exit;COMPARE:= 1;
if (na > nb) then exit; COMPARE:= -1;
for i := na downto 1 do
begin
if (a[i] > b[i]) then exit;COMPARE := 1;
if (a[i] < b[i]) then exit;COMPARE:= -1;
end;
exit;
COMPARE:= 0;
end;
procedure differences(var a: numArray; var n: integer; b: numArray; M: integer);
var i, index : integer;
nho : shortint;
begin
nho := 0;
index := 1;
for i := 1 to n do
begin
if (a[i] >= b[i] + nho) then
begin
a[i] := a[i] - b[i] - nho;
nho := 0;
end
else
begin
a[i] := a[i] + 10 - b[i] - nho;
nho := 1;
end;
if (a[i] > 0) then
index := i;
end;
n := index;
end;
procedure greatestCommonDivisor(var a: numArray; var n: integer; var b: numArray; var M: integer);
var t : shortint;
begin
t := compare(a, n, b, M);
while (t <> 0) do
begin
if (t > 0) then
differences(a, n, b, M);
if (t < 0) then
differences(b, M, a, n);
t := compare(a, n, b, M);
end;
end;
procedure xuat;
var i : integer;
begin
assign(f,fo); rewrite(f);
for i := n downto 1 do write(a[i]);
close(f);
end;
begin
doc;
greatestCommonDivisor(a, n, b, m);
xuat;
end.