//2745 진법변환
//c언어 하다가 런타임 에러나서 자바로 다시 함

/* 알고리즘
    scanf N B 
    N을 자릿수대로 나누어야함 -> string로 저장
    1. 아스키코드 변환
    2. 진법변환: 각각 숫자들에 B의 0제곱 ~ B의 마지막 제곱

    length = sizeof(string)/sizeof(int)
    for(i=0;i<length;i++)
        i) 0<=char[i]<=9 
            아스키코드 변환
            진법변환
        ii) 65<=char[i]<90 :A~ Z는 아스키코드로 65~90
            아스키코드 변환
            진법변환
*/

import java.util.Scanner;

public class changeNum{
     public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String N = sc.next();
        int B = sc.nextInt();
        int len = N.length();
        int result = 0;
        int num = 0;

        for(int i=0;i<len;i++){
            if(N.charAt(i)>=65)  //charAt(): String 타입 문자열을 char타입으로 바꾸어 주는 메소드
                num = N.charAt(i)-55;
            else
                num = N.charAt(i)-'0';
            int t = (int)Math.pow(B, len-i-1);//Math.pow(대상숫자, 지수) -> 거듭제곱 구하는 메소드, double형
            //제곱수가 올라가는 형태를 생각해보면, 배열 인덱스와 반대로 지수가 올라가므로 (len-i)-1 해주어야 함
            result += t*num;
        }
        System.out.println(result);  
        sc.close();
    }
  
}
import Foundation

let input = readLine()!.split(separator: " ")
let arr = Array(input[0]).reversed()
let notation = Double(input[1])!
let number:[String] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K" ,"L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
var digit: Double = 0
var result = 0

for i in arr {
    for j in 0..<number.count {
        if(number[j] == String(i)){
            result += Int(pow(notation, digit)) * j
        }
    }
    digit += 1
}

print(result)

let input = readLine()!.split(separator: " ")
let result = Int(input[0], radix: Int(input[1])!)!
print(result)