import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
* 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s1="";
String s2="";
long sum=0; //定义long型变量
String s = reader.readLine();
//char []ArrOld = s.toCharArray();不需要转换
s1=s.toUpperCase();//将s中的小写字母转换为大写字母
/* int i=0;
while(ArrOld[i]!='\0') //java 的字符数组没有结束符!!!!!!!
{
char []ArrNew = new char[ArrOld.length];
ArrNew[i]=(char)(ArrOld[i]-26);
System.out.println(ArrNew);
s=new String(ArrNew);
i++;
}*/
s2=hexToBinary(s1);
for(int i=0;i<s2.length();i++)
{
/* System.out.println(s2.charAt(s2.length()-i-1));
System.out.println(PowerTwo(i)); */
/* long k=Integer.valueOf(s2.charAt(s2.length()-i-1));
System.out.println("p:::"+p);
System.out.println("k:::"+k); */
sum+=((s2.charAt(s2.length()-i-1))-48)*PowerTwo(i);//字符串的0只能转换成int型的48
}
System.out.println(sum);
}
public static long PowerTwo(int i){ //返回long型数据,否则int型可能会越界
long n=1;
if(i==0)
{
return 1;
}else
{
for(int j=0;j<i;j++)
n=n*2;
return n;
}
}
//十六进制转换为二进制算法
public static String hexToBinary(String hexNum){
char[] chs = {'0','1'};
String str = new String("0123456789ABCDEF");
char[] charArray = hexNum.toCharArray();
int pos = charArray.length*4;
char[] binaryArray = new char[pos];
for (int i = charArray.length - 1; i >=0; i--) {
int temp = str.indexOf(charArray[i]);
for(int j=0;j<4;j++){
binaryArray[--pos] = chs[temp & 1];
temp = temp >>> 1;
}
}
return new String(binaryArray);
}
}