#include <bits/stdc++.h>
using namespace std;
bool zero(double x) { return x > -1e-6 && x < 1e-6; }
char s1[10], s2[10];
int val[256], len1, len2;
void init() {
  int i;
  for (i = 0; i <= 9; ++i) val[i + '0'] = i;
  for (i = 'A'; i <= 'Z'; ++i) val[i] = i - 'A' + 10;
}
bool flag;
bool check(int k) {
  int i, ex, v1 = 0, v2 = 0;
  for (i = len1 - 1; i >= 0; --i) {
    if (val[s1[i]] >= k) return false;
  }
  for (i = len2 - 1; i >= 0; --i) {
    if (val[s2[i]] >= k) return false;
  }
  ex = 1;
  for (i = len1 - 1; i >= 0; --i) {
    v1 += ex * val[s1[i]];
    ex *= k;
  }
  ex = 1;
  for (i = len2 - 1; i >= 0; --i) {
    v2 += ex * val[s2[i]];
    ex *= k;
  }
  if (v1 < 0 || v1 > 23) return false;
  if (v2 < 0 || v2 > 59) return false;
  if (v1 == val[s1[len1 - 1]] && v2 == val[s2[len2 - 1]]) flag = 1;
  return true;
}
int stat[100], top;
char ss[100];
int main() {
  int i, j, ans = 0;
  scanf("%s", ss);
  for (i = j = 0; ss[i] != ':'; ++i) s1[j++] = ss[i];
  s1[j] = '\0';
  j = 0;
  for (++i; ss[i]; ++i) s2[j++] = ss[i];
  s2[j] = '\0';
  len1 = strlen(s1);
  len2 = strlen(s2);
  init();
  top = 0;
  flag = 0;
  for (i = 2; i < 70; ++i) {
    if (check(i)) {
      stat[top++] = i;
    }
  }
  if (flag)
    printf("-1\n");
  else if (top == 0)
    printf("0\n");
  else {
    for (i = 0; i < top; ++i) {
      if (i) printf(" ");
      printf("%d", stat[i]);
    }
    printf("\n");
  }
  return 0;
}
