#include <iostream>
#include <string>
#include <cctype> // 用于 isdigit 函数
using namespace std;
// 判断一个字符串是否是合法的指令
bool isValidCommand(const string& cmd) {
// 指令长度必须是 3 或 4
if (cmd.length() < 3 || cmd.length() > 4) return false;
// 第一个字符必须是 A/D/W/S
char dir = cmd[0];
if (dir != 'A' && dir != 'D' && dir != 'W' && dir != 'S') return false;
// 最后一个字符必须是 ;
if (cmd.back() != ';') return false;
// 中间部分必须是数字,isdigit函数对cmd【i】进行判定,为数字字符返回true,反之为false
for (size_t i = 1; i < cmd.length() - 1; ++i) {
if (!isdigit(cmd[i])) return false;
}
// 提取数字部分,stoi是将字符串转换为数字的函数,substr(pos,L)是将从第pos个字符的位置开始,截取共计L长度的字符,将其从字符串中提取出来
int distance = stoi(cmd.substr(1, cmd.length() - 2));
if (distance < 1 || distance > 99) return false;
return true;
}
// 解析指令并移动小人
void moveCharacter(const string& cmd, int& x, int& y) {
if (!isValidCommand(cmd)) return;
char dir = cmd[0];
int distance = stoi(cmd.substr(1, cmd.length() - 2));
switch (dir) {
case 'A': x -= distance; break; // 向左
case 'D': x += distance; break; // 向右
case 'W': y += distance; break; // 向上
case 'S': y -= distance; break; // 向下
}
}
int main() {
string s;
getline(cin, s); // 读取输入
int x = 0, y = 0; // 初始位置
size_t pos = 0;
// 遍历字符串,解析指令
while (pos < s.length()) {
size_t nextPos = s.find(';', pos); // 找到下一个分号
if (nextPos == string::npos) break; // 如果没有分号,结束
string cmd = s.substr(pos, nextPos - pos + 1); // 提取指令
moveCharacter(cmd, x, y); // 移动小人
pos = nextPos + 1; // 更新起始位置
}
// 输出最终坐标
cout << x << "," << y << endl;
return 0;
}