a:array[1..300]of integer;
b:array[1..300]of integer;
m:integer;
i,j:integer;
p,c:integer;
st:string;
function check:boolean;
var
i:integer;
begin
check:=false;
for i:=1 to p div 2 do
if a[i]<>a[p+1-i] then exit;
check:=true;
end;
procedure solve;
var
i:integer;
begin
for i:=1 to p do
b[p+1-i]:=a[i];
for i:=1 to p do
begin
inc(a[i],b[i]);
inc(a[i+1],a[i] div m);
a[i]:=a[i] mod m;
end;
if a[p+1]<>0 then inc(p);
end;
begin
readln(m);
readln(st);
p:=length(st);
for i:=1 to p do
case st[i] of
a..f: a[p+1-i]:=ord(st[i])+10-ord(a);
0..9: a[p+1-i]:=ord(st[i])-48;
end;
if check then
begin
write(0);
halt;
end;
while c<=30 do
begin
solve;
inc(c);
if check then
begin
write(c);
halt;
end;
end;
write(Impossible);
end.