import java.util.*;

public class Solution {

//解题思路和(链表相加,数组相加)是一样的,只不过要提前处理好数据,a->10,...,z->25,然后取反按位相加就可以了。
public String thirtysixAdd (String A, String B) {
    // write code here
    int aLength = A.length();
    int bLength = B.length();
    StringBuilder stringBuilder = new StringBuilder(A);
    A = stringBuilder.reverse().toString();
    stringBuilder = new StringBuilder(B);
    B = stringBuilder.reverse().toString();
    char[] charsA = A.toCharArray();
    int[] intA = new int[aLength];
    for (int i = 0; i < charsA.length; i++) {
        if(Character.isLetter(charsA[i])){
            intA[i]=charsA[i]-87;
        }else {
            intA[i]=charsA[i]-48;
        }
    }
    char[] charsB = B.toCharArray();
    int[] intB = new int[bLength];
    for (int i = 0; i < charsB.length; i++) {
        if(Character.isLetter(charsB[i])){
            intB[i]=charsB[i]-87;
        } else {
            intB[i]=charsB[i]-48;
        }
    }
    int i = 0;
    int j = 0;
    int positive = 0;
    int surplus;
    stringBuilder = new StringBuilder();
    while (i<aLength&&j<bLength){
        surplus = (positive+intA[i]+intB[j])%36;
        positive = (positive+intA[i]+intB[j])/36;
        if(surplus<=9){
            stringBuilder.append(surplus);
        } else {
            stringBuilder.append((char) (surplus+87));
        }
        i++;
        j++;
    }
    if(i==aLength){
        while (j<bLength){
            surplus = (positive+intB[j])%36;
            positive = (positive+intB[j])/36;
            if(surplus<=9){
                stringBuilder.append(surplus);
            } else {
                stringBuilder.append((char) (surplus+87));
            }
            j++;
        }
    } else {
        while (i<aLength){
            surplus = (positive+intA[i])%36;
            positive = (positive+intA[i])/36;
            if(surplus<=9){
                stringBuilder.append(surplus);
            } else {
                stringBuilder.append((char) (surplus+87));
            }
            i++;
        }
    }
    if(positive!=0){
        stringBuilder.append(positive);
    }
    return stringBuilder.reverse().toString();
}

}