#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<limits.h>

long long twocomplementToDecimal(const char* binaryString) {
    int len = strlen(binaryString);
    
    for (int i = 0; i < len; i++) {
        if (binaryString[i] != '0' && binaryString[i] != '1') {
            printf("Invalid Input\n");
            exit(0);
        }
    }
    
    if (len == 0 || len > 32) {
        printf("Invalid Input\n");
        exit(0);
    }
    
    long long decimalValue = 0;
    long long powerOf2 = 1;
    
    for (int i = len - 1; i >= 1; i--) {
        if (binaryString[i] == '1') {
            decimalValue += powerOf2;
        }
        powerOf2 *= 2;
    }
    
    if (binaryString[0] == '1') {
        decimalValue -= powerOf2;
    }
    
    return decimalValue;
}

int main() {
    char binaryString[33];
    
    if (scanf("%s", binaryString) !=1) {
        printf("Invalid Input\n");
        return 1;
    }
    
    long long result = twoComplementToDecimal(binaryString);
    printf("%lld\n", result);
    
    return 0;
}