#include <stdio.h>
#include <ctype.h>

int main() {
    char input[1000]; // 假设输入的字符串长度不超过1000
    char hex_str[1000]; // 存储提取出的十六进制字符
    int index = 0; // 记录当前处理的字符位置
    int negative = 0; // 标记是否存在负号

    // 读取输入直到遇到 #
    while (1) {
        char ch = getchar();
        if (ch == '#') {
            break;
        }
        input[index++] = ch;
    }
    input[index] = '\0'; // 在输入末尾加上字符串结束符

    // 判断是否有负号
    if (input[0] == '-') {
        negative = 1; // 存在负号
        index = 1; // 从下一个字符开始处理
    } else {
        index = 0; // 没有负号，从第一个字符开始处理
    }

    int hex_index = 0; // 记录当前提取的十六进制字符位置

    // 遍历输入字符串，提取十六进制字符
    while (input[index] != '\0') {
        char ch = toupper(input[index]); // 将字符转换为大写以便统一处理
        if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F')) {
            hex_str[hex_index++] = ch; // 是十六进制字符，加入到hex_str中
        }
        index++;
    }
    hex_str[hex_index] = '\0'; // 在提取的十六进制字符末尾加上字符串结束符

    // 使用sscanf将十六进制字符串转换为长整型
    long decimal_value;
    sscanf(hex_str, "%lx", &decimal_value); // %lx格式将十六进制字符串转换为长整型

    // 如果存在负号，转换后的数值取负
    if (negative) {
        decimal_value = -decimal_value;
    }

    // 输出转换后的十进制数值
    printf("%ld\n", decimal_value);

    return 0;
}
