#include<bits/stdc++.h>
using namespace std;
// typedef
typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pii;
// define
#define MOD 1e9+7
#define all(a) (a).begin(),(a).end()
#define fastread() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const double eps = 1e-9;
// debug
template<typename F,typename S>ostream&operator<<(ostream&os,const pair<F,S>&p){return os<<"("<<p.first<<", "<<p.second<<")";}
template<typename T>ostream&operator<<(ostream&os,const vector<T>&v){os<<"{";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"}";}
template<typename T>ostream&operator<<(ostream&os,const set<T>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<",";os<<*it;}return os<<"]";}
template<typename T>ostream&operator<<(ostream&os,const multiset<T>&v) {os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<*it;}return os<<"]";}
template<typename F,typename S>ostream&operator<<(ostream&os,const map<F,S>&v){os<<"[";for(auto it=v.begin();it!=v.end();++it){if(it!=v.begin())os<<", ";os<<it->first<<" = "<<it->second;}return os<<"]";}
#define dbg(args...) do {cerr << #args << " : "; err(args); } while(0)
void err(){cerr << endl;}
template<typename T>void err(T a[],int n){for(int i=0;i<n;++i)cerr<<a[i]<<' ';cerr<<endl;}
template<typename T,typename...hello>void err(T arg,const hello&...rest){cerr<<arg<<' ';err(rest...);}
void init_code(){
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
}
void solve(){
vector<int> arr(3);
cin>>arr[0];
cin>>arr[1];
cin>>arr[2];
sort(all(arr));
if(arr[0] == arr[1] && arr[1] == arr[2]) cout<<0<<endl;
else if(arr[0] != arr[1] && arr[1] != arr[2]){
int d1 = arr[1] - arr[0];
int d2 = arr[2] - arr[1];
if(d1%d2 == 0 || d2%d1 == 0){
cout<<2<<endl;
}else{
cout<<3<<endl;
}
}else{
cout<<1<<endl;
}
}
int main(){
// init_code();
int t; cin>>t;
while(t--)
solve();
return 0;
}