#include <bits/stdc++.h>
using namespace std;
unsigned long long modpow(int exp) {
  unsigned long long value = 1;
  for (size_t i = 0; i < exp; i++) {
    value *= 2;
    value %= 1000003;
  }
  return value;
}
string binaryEq(char x) {
  switch (x) {
    case '>':
      return "1000";
      break;
    case '<':
      return "1001";
      break;
    case '+':
      return "1010";
      break;
    case '-':
      return "1011";
      break;
    case '.':
      return "1100";
      break;
    case ',':
      return "1101";
      break;
    case '[':
      return "1110";
      break;
    case ']':
      return "1111";
      break;
  }
}
int main(int argc, char const *argv[]) {
  string brainfck, binaryString;
  cin >> brainfck;
  int len = brainfck.size();
  for (int i = 0; i < len; i++) {
    binaryString.append(binaryEq(brainfck[i]));
  }
  unsigned long long value = 0;
  int indexCounter = 0;
  for (int i = binaryString.length() - 1; i >= 0; i--) {
    if (binaryString[i] == '1') {
      value += modpow(indexCounter);
    }
    indexCounter++;
  }
  cout << value % 1000003 << endl;
  return 0;
}
