← Home
use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();

    let first_line = lines.next().unwrap().unwrap();
    let n: usize = first_line.trim().parse().unwrap();

    for _ in 0..n {
        let s = lines.next().unwrap().unwrap();
        println!("{}", solve(s));
    }
}

fn solve(s: String) -> String {
    let chars: Vec<char> = s.chars().collect();
    let starts_with_r = chars[0] == 'R';
    let second_is_digit = chars.len() > 1 && chars[1].is_ascii_digit();
    
    let c_index_opt = s[1..].find('C').map(|i| i + 1); 

    if starts_with_r && second_is_digit && c_index_opt.is_some() {
        let c_idx = c_index_opt.unwrap();
        
        let row_part = &s[1..c_idx];
        let col_part = &s[c_idx+1..];
        let col_num: u32 = col_part.parse().unwrap();
        
        let col_letters = number_to_col(col_num);
        
        format!("{}{}", col_letters, row_part)
    } else {
        let first_digit_idx = s.find(|c: char| c.is_ascii_digit()).unwrap();
        
        let letters = &s[..first_digit_idx];
        let row_part = &s[first_digit_idx..];
        let col_num = col_to_number(letters);
        
        format!("R{}C{}", row_part, col_num)
    }
}

fn col_to_number(col_str: &str) -> u32 {
    let mut num = 0;
    for c in col_str.chars() {
        let val = c as u32 - 'A' as u32 + 1;
        num = num * 26 + val;
    }
    num
}

fn number_to_col(mut n: u32) -> String {
    let mut result = Vec::new();
    while n > 0 {
        n -= 1;
        let remainder = (n % 26) as u8;
        result.push((b'A' + remainder) as char);
        n /= 26;
    }
    result.into_iter().rev().collect()
}