#include <bits/stdc++.h>   using namespace std;   const int OO = 1e9;   const long long INF = 1e18;   const int irand(int lo, int hi) {     return ((double)rand() / (RAND_MAX + 1.0)) * (hi - lo + 1) + lo;   }   const long long lrand(long long lo, long long hi) {     return ((double)rand() / (RAND_MAX + 1.0)) * (hi - lo + 1) + lo;   }   template <typename T>   T getnum() {     int sign = 1;     T ret = 0;     char c;     do {       c = getchar();     } while (c ==     || c ==   n );     if (c ==  - )       sign = -1;     else       ret = c -  0 ;     while (1) {       c = getchar();       if (c <  0  || c >  9 ) break;       ret = 10 * ret + c -  0 ;     }     return sign * ret;   }   inline void ini(int& x) { x = getnum<int>(); }   inline void scani(int& x) { scanf( %d , &x); }   const int N = 1e5 + 5;   int n;   int a[N], b[N];   long long ans = 0;   vector<pair<int, int> > ins;   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cout.setf(ios::fixed);     cout.setf(ios::showpoint);     cout.precision(10);     cin >> n;     string str;     cin >> str;     for (int i = 0; i < n; i++) {       a[i + 1] = str[i] -  0 ;     }     cin >> str;     for (int i = 0; i < n; i++) {       b[i + 1] = str[i] -  0 ;     }     int difa = 0, difb = 0;     for (int i = 1; i <= n; i += 1) {       if (i & 1) {         difa += a[i];         difb += b[i];       } else {         difa -= a[i];         difb -= b[i];       }     }     if (difa != difb) {       cout << -1 <<   n ;       return 0;     }     int f = 2;     for (int i = 1; i <= n - 1; i += 1) {       if (f == i) f++;       while (a[i] > b[i]) {         a[i]--;         while (1) {           assert(f <= n);           if ((f - i) & 1) {             if (a[f] == 0) {               f++;             } else {               a[f]--;               break;             }           } else {             if (a[f] == 9) {               f++;             } else {               a[f]++;               break;             }           }         }         ans += f - i;         if (ins.size() < 100000) {           for (int j = f - 1; j >= i; j -= 1) {             if ((j - i) & 1) {               ins.push_back({j, 1});             } else {               ins.push_back({j, -1});             }           }         }       }       while (a[i] < b[i]) {         a[i]++;         while (1) {           assert(f <= n);           if ((f - i) & 1) {             if (a[f] == 9) {               f++;             } else {               a[f]++;               break;             }           } else {             if (a[f] == 0) {               f++;             } else {               a[f]--;               break;             }           }         }         ans += f - i;         if (ins.size() < 100000) {           for (int j = f - 1; j >= i; j -= 1) {             if ((j - i) & 1) {               ins.push_back({j, -1});             } else {               ins.push_back({j, 1});             }           }         }       }     }     cout << ans <<   n ;     for (int i = 0; i < min(100000, (int)ins.size()); i++) {       cout << ins[i].first <<     << ins[i].second <<   n ;     }     return 0;   }   