#include<iostream>
#include<string.h>
#include<ctype.h>
long long turn_10(char a[],int radix){
int i=0,len=strlen(a),tmp;
long long sum=0;
do{
sum*=radix;
tmp=isdigit(a[i])?(a[i]-'0'):(a[i]-'a'+10);
if(tmp>=radix) return 0;
sum+=tmp;
i++;
}while(i<len);
return sum;
}
int main(){
int i,j;
int tag,radix;
long long sum,tmp;
char N1[11],N2[11];
scanf("%s %s%d%d",N1,N2,&tag,&radix);
int flag=0;
if(tag==1){
sum=turn_10(N1,radix);
for(i=2;i<=1000;i++){
tmp=turn_10(N2,i);
// printf("tmp=%lld\n",tmp);
if(sum<=tmp||tmp<0){
if(sum==tmp) flag=1;
break;
}
}
}
else if(tag==2){
sum=turn_10(N2,radix);
for(i=2;i<=1000;i++){
tmp=turn_10(N1,i);
if(sum<=tmp||tmp<0){
if(sum==tmp) flag=1;
break;
}
}
}
if(flag==1) printf("%d",i);
else printf("Impossible");
return 0;
}