#include <bits/stdc++.h>
using namespace std;
long long MOD = 1e9 + 7;
long long powmod(long long a, long long l, long long md) {
  long long res = 1;
  while (l) {
    if (l & 1) res = res * a % md;
    l /= 2;
    a = a * a % md;
  }
  return res;
}
long long __set(long long b, long long i) { return b | (1 << i); }
long long __unset(long long b, long long i) { return b & !(1 << i); }
long long __check(long long b, long long i) { return b & (1 << i); }
long long mul(long long a, long long b) {
  return ((a % MOD) * (b % MOD)) % MOD;
}
long long add(long long a, long long b) { return (a + b) % MOD; }
long long sub(long long a, long long b) {
  return (((a - b) % MOD) + MOD) % MOD;
}
long long __div(long long a, long long b) {
  return mul(a, powmod(b, MOD - 2, MOD));
}
const long long inf = 0xFFFFFFFFFFFFFFFL;
priority_queue<long long, vector<long long>, greater<long long> > pq;
clock_t time_p = clock();
void time() {
  time_p = clock() - time_p;
  cerr << "Time Taken : " << (float)(time_p) / CLOCKS_PER_SEC << "\n";
}
int32_t main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long dp[10][10][10] = {};
  for (long long x = 0; x < 10; x++) {
    for (long long y = 0; y < 10; y++) {
      for (long long n = 0; n < 10; n++) {
        long long mn = inf;
        for (long long a = 0; a < 10; a++) {
          for (long long b = 0; b < 10; b++) {
            if ((a * x + b * y) % 10 == n) {
              if (!(a == 0 && b == 0 && !(x == 0 || y == 0)))
                mn = min(mn, max(a + b - 1, 0ll));
            }
          }
        }
        dp[x][y][n] = mn;
      }
    }
  }
  string s;
  cin >> s;
  long long n = s.length();
  long long dif[10] = {};
  for (long long i = 0; i < n - 1; i++) {
    dif[(s[i + 1] - s[i] + 10) % 10]++;
  }
  long long mat[10][10];
  for (long long i = 0; i < 10; i++) {
    for (long long j = 0; j < 10; j++) mat[i][j] = -1;
  }
  for (long long i = 0; i < 10; i++) {
    for (long long j = i; j < 10; j++) {
      long long ans = 0, f = 0;
      for (long long k = 0; k < 10; k++) {
        if (dif[k]) {
          if (dp[i][j][k] != inf)
            ans += (dp[i][j][k]) * dif[k];
          else {
            f = 1;
            break;
          }
        }
      }
      if (!f) {
        mat[i][j] = ans;
        mat[j][i] = ans;
      }
    }
  }
  for (long long i = 0; i < 10; i++) {
    for (long long j = 0; j < 10; j++) cout << mat[i][j] << " ";
    cout << "\n";
  }
  time();
  return 0;
}
