import java.util.Stack;
public class CharacterToNum {
public static final String UNITS = "十百千万亿";
public static final String NUMS = "零一二三四五六七八九";
public static void main(String[] args) {
System.out.println(change("三千二百零一"));
}
public static long change(String cNum){
int len = cNum.length();
long sum = 0;
long currentSum = 0;
Stack<Integer> s = new Stack<>();
Stack<Integer> s1 = new Stack<>();
for (int i = 0; i < len; i++) {
char tmp = cNum.charAt(i);
int res = UNITS.indexOf(tmp);
int res1 = NUMS.indexOf(tmp);
if (res1 == 0)
continue;
if (res == -1){
s.push(res1);
if (!s1.empty() && s1.peek() == 0
|| (i-1>=0 && NUMS.indexOf(cNum.charAt(i-1)) == 0)){
currentSum += (long)s.pop();
}
}
else {
s1.push(res);
int ok = 0;
for (int j = i+1; j < len; j++) {
if (NUMS.indexOf(cNum.charAt(j)) != -1)
continue;
if (UNITS.indexOf(cNum.charAt(j)) > res){
ok = 1;
break;
}
}
if (ok == 0){
int num1 = 0;
if (currentSum == 0)
num1 = s.pop();
switch (res){
case 0 :
sum += currentSum != 0 ?
currentSum * 10 : num1 * 10 ;break;
case 1 :
sum += currentSum != 0 ?
currentSum * 100 : num1 *100;break;
case 2 : sum += currentSum != 0 ?
currentSum * 1000 : num1 *1000;break;
case 3 : sum += currentSum != 0 ?
currentSum * 10000 : num1 * 10000;break;
case 4 : sum += currentSum != 0 ?
currentSum * 100000000 : num1 * 100000000 ;break;
}
currentSum = 0;
}else {
int num = s.pop();
switch (res){
case 0 : currentSum += (long) num * 10;break;
case 1 : currentSum += (long) num * 100;break;
case 2 : currentSum += (long) num * 1000;break;
case 3 : currentSum += (long) num * 10000;break;
case 4 : currentSum += (long) num * 100000000;break;
}
}
}
}
return sum + currentSum;
}
}