#include using namespace std; using ll = long long; const ll INF = 1e18; template using graph = vector>; int n; const int N = 3000; int used[N]; int cnt[N]; graph g(N); int cur = 0; string s; string t; vector> ans; void dfs(int v) { if (v >= 3) { used[v] = 1; ans.push_back({"DRIVE", v - 2}); if (cur) { ans.push_back({"DROPOFF", -1}); cur--; } if (t[v - 3] != '-') { ans.push_back({"PICKUP", -1}); cur++; } } for (int to: g[v]) { if (to <= 2 && cnt[to]) { dfs(to); } else if (!used[to]) { cnt[v]--; dfs(to); } } } void solve() { cin >> n; cin >> s >> t; for (int i = 0; i < n; i++) { if (s[i] == t[i]) continue; if (s[i] == '-') g[0].push_back(i + 3); if (s[i] == 'C') g[1].push_back(i + 3); if (s[i] == 'M') g[2].push_back(i + 3); if (t[i] == '-') g[i + 3].push_back(0); if (t[i] == 'C') g[i + 3].push_back(1); if (t[i] == 'M') g[i + 3].push_back(2); } cnt[0] = g[0].size(); cnt[1] = g[1].size(); cnt[2] = g[2].size(); dfs(0); cout << ans.size() << "\n"; for (auto [s, t]: ans) { cout << s; if (t != -1) cout << " " << t; cout << "\n"; } } int32_t main() { int t = 1; // cin >> t; while (t--) { solve(); } }