#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <cmath>

using namespace std;

int eval_simple(const string& str) {
	vector<int> exprs;
	vector<char> opers;
	
	string expr = "";
	for (int i = 0; i < (int) str.length(); i++) {
		char c = str[i];
		if (c == ' ') {
			if (expr != "") {
				int num;
				sscanf(expr.c_str(), "%d", &num);
				exprs.push_back(num);

				//printf("-%s- -%d- %d\n", expr.c_str(), num, exprs[exprs.size() - 1]);
				expr = "";
			}
			continue;
		}
		if (c == '+' || c == '-' || c == '*') {
			opers.push_back(c);
			//printf("%c\n", c);
		}
		else expr += c;
	}
	if (expr != "") {
  	int num;
		sscanf(expr.c_str(), "%d", &num);
	  exprs.push_back(num);
		//printf("%d\n", exprs[exprs.size() - 1]);
	}
	
	for (int i = 0; i < (int) opers.size(); i++) {
		char c = opers[i];
		if (c == '*') {
			opers.erase(opers.begin() + i);
						
			int newValue = exprs[i] * exprs[i + 1];
			exprs[i] = newValue;
			exprs.erase(exprs.begin() + i + 1);			
			
			i--;
		}
	}
	
	int res = exprs[0];
	for (int i = 0; i < (int) opers.size(); i++) {
		char op = opers[i];
		if (op == '+') res += exprs[i + 1];
		else res -= exprs[i + 1];
	}
	return res;
}

int main() {
	int w, h;
	while (scanf("%d %d", &h, &w) > 0) {
		if (w == 0 && h == 0) break;
		vector<string> lines;
		getchar();
		
		for (int y = 0; y < h; y++) {
			string str;
			for (int x = 0; x < w; x++) {
				str+= (char) getchar();
			}
			lines.push_back(str);
			getchar();
		}
		
		/*for (int y = 0; y < h; y++) {
			printf("%s\n", lines[y].c_str());
		}*/
		
		int res = 0;
		if (h == 1) res = eval_simple(lines[0]);
		else if (h == 2) {
			string str = lines[1];
			string simple;
			
			for (int x = 0; x < w; x++) {
				char c = str[x];
				if (c == '\\') continue;
				else if (c == '/') {
					int b = ++x;
					while (x < w && lines[0][x] == '_') x++;
					int part_res = (int) sqrt(eval_simple(str.substr(b, x-b)));
					char buf[10000];
					sprintf(buf, "%d", part_res);
					simple += string(buf);
				}
				else simple += c;
			}
			
			res = eval_simple(simple);
		}
		else if (h == 3) {
			string str = lines[1];
			string simple;
			
			for (int x = 0; x < w; x++) {
				char c = str[x];
				if (c == '\\') continue;
				else if (c == '/') {
					int b = ++x;
					while (x < w && lines[0][x] == '_') x++;
					int part_res = (int) sqrt(eval_simple(str.substr(b, x-b)));
					char buf[10000];
					sprintf(buf, "%d", part_res);
					simple += string(buf);
				}
				else if (c == '=') {
					int b = x;
					while (x < w && str[x] == '=') x++;
					int part_res = (int) eval_simple(lines[0].substr(b, x-b)) / eval_simple(lines[2].substr(b, x-b));
					char buf[10000];
					sprintf(buf, "%d", part_res);
					simple += string(buf);
				}
				else simple += c;
			}
			
			res = eval_simple(simple);
		}
		
		printf("%d\n", res);
	}
	
	return 0;
}