#include using namespace std; vector ans; void f(vector &C, vector &CM, vector &M, vector &MC, vector &_M, vector &_C){ while(C.size()){ ans.push_back("DRIVE " + to_string(C.back())); ans.push_back("PICKUP"); C.pop_back(); bool w = 0; while(true){ if(MC.size()){ ans.push_back("DRIVE " + to_string(MC.back())); ans.push_back("DROPOFF"); ans.push_back("PICKUP"); MC.pop_back(); w = 1; } else break; if(CM.size()){ ans.push_back("DRIVE " + to_string(CM.back())); ans.push_back("DROPOFF"); ans.push_back("PICKUP"); CM.pop_back(); w = 0; } else break; } if(!w){ if(_C.size()){ ans.push_back("DRIVE " + to_string(_C.back())); ans.push_back("DROPOFF"); _C.pop_back(); } else{ ans.pop_back(); } } else{ if(_M.size()){ ans.push_back("DRIVE " + to_string(_M.back())); ans.push_back("DROPOFF"); _M.pop_back(); } else{ ans.pop_back(); } } } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector C, CM, M, MC, _M, _C; string s; cin >> s; string t; cin >> t; swap(s, t); for(int i = 0; i < n; ++i){ if(s[i] == t[i])continue; if(s[i] == 'C' && t[i] == '-')C.push_back(i + 1); if(s[i] == 'C' && t[i] == 'M')CM.push_back(i + 1); if(s[i] == 'M' && t[i] == '-')M.push_back(i + 1); if(s[i] == 'M' && t[i] == 'C')MC.push_back(i + 1); if(s[i] == '-' && t[i] == 'C')_C.push_back(i + 1); if(s[i] == '-' && t[i] == 'M')_M.push_back(i + 1); } f(C, CM, M, MC, _M, _C); f(M, MC, C, CM, _C, _M); cout << ans.size() << '\n'; for(auto x : ans)cout << x << '\n'; }