#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
class Solution {
public:
std::vector<std::string> tokenize(const std::string& str, char delimiter) {
std::stringstream ss(str);
std::string token;
std::vector<std::string> tokens;
while (std::getline(ss, token, delimiter)) {
if (!token.empty()) {
tokens.push_back(token);
}
}
return tokens;
}
std::string relative_path(std::string string1, std::string string2) {
std::string result = "cd ";
std::vector<std::string> tokens1 = tokenize(string1, '/');
std::vector<std::string> tokens2 = tokenize(string2, '/');
int common_length = 0;
while (common_length < std::min(tokens1.size(), tokens2.size()) &&
tokens1[common_length] == tokens2[common_length]) {
common_length++;
}
for (int i = common_length; i < tokens1.size(); ++i) {
result += "../";
}
for (int i = common_length; i < tokens2.size(); ++i) {
result += tokens2[i];
if (i < tokens2.size() - 1) {
result += "/";
}
}
return result;
}
};
int main() {
Solution solution;
std::string s1 = "/home/ubuntu/finplus/cards/order";
std::string s2 = "/home/ubuntu/finplus/expenses/records";
std::string rel_path = solution.relative_path(s1, s2);
std::cout << rel_path << std::endl;
return 0;
}