program fft;
type cp=record x,y:double;end;
arr=array[0..1 shl 14]of cp;
var a,b,tt,w:array[0..1 shl 14]of cp;
c:array[0..1000010]of longint;
n,tot1,tot2:longint;
operator *(var a,b:cp)c:cp;
begin c.x:=a.x*b.x-a.y*b.y;c.y:=a.x*b.y+a.y*b.x;end;
operator +(var a,b:cp)c:cp;
begin c.x:=a.x+b.x;c.y:=a.y+b.y;end;
operator -(var a,b:cp)c:cp;
begin c.x:=a.x-b.x;c.y:=a.y-b.y;end;
procedure dft(var a:arr;s,t:longint);
var i,p:longint;
wt:cp;
begin
if n>>t=1 then exit;
dft(a,s,t+1);
dft(a,s+1<<t,t+1);
for i:=0 to n>>(t+1)-1 do
begin
p:=i<<(t+1)+s;
wt:=w[i<<t]*a[p+1<<t];
tt[i]:=a[p]+wt;
tt[i+n>>(t+1)]:=a[p]-wt;
end;
for i:=0 to n>>t-1 do a[i<<t+s]:=tt[i];
end;
procedure init;
var ch:char;
i,k:longint;
j:cp;
begin
read(ch);tot1:=0;tot2:=0;
while (ord(ch)>=ord(‘0‘))and(ord(ch)<=ord(‘9‘)) do
begin
a[tot1].x:=ord(ch)-ord(‘0‘);
read(ch);
inc(tot1);
end;
read(ch);
while (ord(‘0‘)<=ord(ch)) and(ord(ch)<=ord(‘9‘)) do
begin
b[tot2].x:=ord(ch)-ord(‘0‘);
read(ch);
inc(tot2);
end;
dec(tot1);dec(tot2);
for i:=0 to tot1 shr 1 do
begin
j:=a[i];a[i]:=a[tot1-i];a[tot1-i]:=j;
end;
for i:=0 to tot2 shr 1 do
begin
j:=b[i];b[i]:=b[tot2-i];b[tot2-i]:=j;
end;
if tot1<tot2 then tot1:=tot2;
n:=1;
while n>>1<(tot1+1) do n:=n shl 1;
for i:=0 to n-1 do w[i].x:=cos(pi*2*i/n);
for i:=0 to n-1 do w[i].y:=sin(pi*2*i/n);
dft(a,0,0);dft(b,0,0);
for i:=0 to n-1 do w[i].y:=-w[i].y;
for i:=0 to n-1 do a[i]:=a[i]*b[i];
dft(a,0,0);
fillchar(c,sizeof(c),0);
for i:=0 to n-1 do
begin
c[i]:=c[i]+round(a[i].x/n);
c[i+1]:=c[i] div 10;
c[i]:=c[i] mod 10;
end;
i:=n;
while (c[i]=0)and(i>0) do dec(i);
for k:=i downto 0 do write(c[k]);
end;
begin
init;
end.