import java.util.Scanner;
public class BinaryTree {
static class TreeNode {
int label;
TreeNode left;
TreeNode right;
TreeNode(int label) {
this.label = label;
left = right = null;
}
}
TreeNode root;
int attemptCount = 0;
void buildTree(int height) {
int maxNode = (1 << (height + 1)) - 1;
root = new TreeNode(maxNode);
buildTreeRec(root, height, maxNode);
}
void buildTreeRec(TreeNode node, int height, int currentLabel) {
if (height == 0 || attemptCount >= 10) {
return;
}
int leftLabel = currentLabel - (1 << height);
int rightLabel = currentLabel - 1;
node.left = new TreeNode(leftLabel);
node.right = new TreeNode(rightLabel);
attemptCount++;
buildTreeRec(node.left, height - 1, leftLabel);
buildTreeRec(node.right, height - 1, rightLabel);
}
int searchNode(TreeNode root, String path) {
TreeNode current = root;
for (char move : path.toCharArray()) {
if (move == 'L' || move == 'l') {
current = current.left;
} else if (move == 'R' || move == 'r') {
current = current.right;
}
if (current == null) {
return -1; // Caminho inv\xe1lido
}
}
return current.label;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
scanner.close();
String[] parts = input.split(" ");
int height = Integer.parseInt(parts[0]);
String path = parts.length > 1 ? parts[1] : "";
BinaryTree tree = new BinaryTree();
tree.buildTree(height);
int label = tree.searchNode(tree.root, path);
System.out.println(label);
}
}