#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;
using edge = struct {
  int to;
  long long cost;
};
template <class t, class u>
void chmax(t& a, u b) {
  if (a < b) a = b;
}
template <class t, class u>
void chmin(t& a, u b) {
  if (b < a) a = b;
}
bool compare_by_b(pair<int, int> a, pair<int, int> b) {
  if (a.second != b.second) {
    return a.second < b.second;
  } else {
    return a.first < b.first;
  }
};
bool compare_by_b_high(pair<int, int> a, pair<int, int> b) {
  if (a.second != b.second) {
    return a.second > b.second;
  } else {
    return a.first < b.first;
  }
};
bool compare_by_b_higheer(tuple<string, int, int> a,
                          tuple<string, int, int> b) {
  if (get<0>(a) != get<0>(b)) {
    return get<0>(a) < get<0>(b);
  } else {
    if (get<1>(a) != get<1>(b)) {
      return get<1>(a) > get<1>(b);
    } else {
      return get<2>(a) > get<2>(b);
    }
  }
};
int main() {
  int a, b, c;
  cin >> a >> b >> c;
  set<int> d{a, b, c};
  int s = 0;
  for (auto itr = d.begin(); itr != d.end(); ++itr) {
    s++;
  }
  cout << s << endl;
  return 0;
}
