#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
const int N = 1e6 + 6;
int toint(string &s) {
  if (s[0] == '0') return 0;
  for (char c : s)
    if (c < '0' || c > '9') return 0;
  return atoi(s.c_str());
}
vector<pair<string, string>> ans;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, m;
  cin >> n;
  set<string> a, b;
  for (int i = 0; i < n; ++i) {
    string s;
    int t;
    cin >> s >> t;
    if (t)
      a.insert(s);
    else
      b.insert(s);
  }
  string tmp, ab;
  for (char c = 'a'; c <= 'z'; ++c) ab += c;
  for (char c = '0'; c <= '9'; ++c) ab += c;
  do {
    tmp.clear();
    for (int i = 0; i < 6; ++i) tmp += ab[rand() % ab.size()];
  } while (a.count(tmp) || b.count(tmp));
  m = a.size();
  set<string> af;
  for (int i = 1; i <= m; ++i) af.insert(to_string(i));
  set<string> bf;
  for (int i = m + 1; i <= n; ++i) bf.insert(to_string(i));
  set<string> a0, a1, a2;
  for (string s : a) {
    int x = toint(s);
    if (1 <= x && x <= m)
      ;
    else if (m < x && x <= n)
      a2.insert(s);
    else
      a1.insert(s);
    af.erase(s);
    bf.erase(s);
  }
  set<string> b0, b1, b2;
  for (string s : b) {
    int x = toint(s);
    if (m < x && x <= n)
      ;
    else if (1 <= x && x <= m)
      b2.insert(s);
    else
      b1.insert(s);
    af.erase(s);
    bf.erase(s);
  }
  for (;;) {
    if (a2.size() && af.size()) {
      string x = *a2.begin(), y = *af.begin();
      ans.emplace_back(x, y);
      a2.erase(x);
      af.erase(y);
      bf.insert(x);
      continue;
    }
    if (b2.size() && bf.size()) {
      string x = *b2.begin(), y = *bf.begin();
      ans.emplace_back(x, y);
      b2.erase(x);
      bf.erase(y);
      af.insert(x);
      continue;
    }
    if (a1.size() && af.size()) {
      string x = *a1.begin(), y = *af.begin();
      ans.emplace_back(x, y);
      a1.erase(x);
      af.erase(y);
      continue;
    }
    if (b1.size() && bf.size()) {
      string x = *b1.begin(), y = *bf.begin();
      ans.emplace_back(x, y);
      b1.erase(x);
      bf.erase(y);
      continue;
    }
    if (a1.size() + a2.size() + b1.size() + b2.size() == 0) break;
    cerr << "?" << a1.size() << ' ' << a2.size() << ' ' << b1.size() << ' '
         << b2.size() << endl;
    string x = *a2.begin();
    ans.emplace_back(x, tmp);
    a2.erase(x);
    a1.insert(tmp);
    bf.insert(x);
  }
  cout << ans.size() << endl;
  for (auto &p : ans) cout << "move " << p.first << ' ' << p.second << '\n';
  return 0;
}
