#include <iostream>
#include <string>
#include <cmath>
int main() {
int n;
// Считываем количество переменных
if (!(std::cin >> n)) {
std::cout << "Error! Invalid vector." << std::endl;
return 0;
}
std::string vector;
// Считываем вектор значений функции
std::cin >> vector;
// Вычисляем необходимую длину вектора: 2^n
// Используем битовый сдвиг (1 << n) для эффективного возведения 2 в степень n
size_t required_length = 1ULL << n;
// Проверяем, совпадает ли длина введенной строки с 2^n
if (vector.length() != required_length) {
std::cout << "Error! Invalid vector." << std::endl;
return 0;
}
// Проверяем, что строка содержит только символы '0' и '1'
for (char c : vector) {
if (c != '0' && c != '1') {
std::cout << "Error! Invalid vector." << std::endl;
return 0;
}
}
// Переводим двоичную строку в десятичное число
// stoull автоматически переводит строку из заданной системы счисления (base 2)
// и возвращает значение типа unsigned long long
unsigned long long index = std::stoull(vector, nullptr, 2);
// Выводим результат
std::cout << index << std::endl;
return 0;
}