#include <bits/stdc++.h>
using namespace std;
const int SIZ = 100000;
const int INF = (1 << 29);
const double EPS = 1e-11;
const double PI = acos(-1.0);
int MAX(int a, int b) { return a > b ? a : b; }
int MIN(int a, int b) { return a < b ? a : b; }
int GCD(int a, int b) {
  while (b) {
    b ^= a ^= b ^= a %= b;
  }
  return a;
}
const int MOD = 1000003;
long long pow(int n, int p) {
  long long x = 1, k = n;
  for (; p; p >>= 1) {
    if (p & 1) x = (x * k) % MOD;
    k = (k * k) % MOD;
  }
  return x;
}
int main() {
  char A[10][6];
  strcpy(A[0], "1000");
  strcpy(A[1], "1001");
  strcpy(A[2], "1010");
  strcpy(A[3], "1011");
  strcpy(A[4], "1100");
  strcpy(A[5], "1101");
  strcpy(A[6], "1110");
  strcpy(A[7], "1111");
  long long res;
  char B[SIZ];
  gets(B);
  int len = strlen(B);
  int i, j, d, k = 0;
  res = 0;
  for (i = 0; i < len; i++) {
    if (B[i] == '>')
      d = 0;
    else if (B[i] == '<')
      d = 1;
    else if (B[i] == '+')
      d = 2;
    else if (B[i] == '-')
      d = 3;
    else if (B[i] == '.')
      d = 4;
    else if (B[i] == ',')
      d = 5;
    else if (B[i] == '[')
      d = 6;
    else if (B[i] == ']')
      d = 7;
    for (j = 0; j < 4; j++, k++) {
      res = (res + ((A[d][j] - 48) * pow(2, 4 * len - k - 1)) % MOD) % MOD;
    }
  }
  cout << res << endl;
  return 0;
}
