def solve(a):
a.sort()
if a[0] == a[1] and a[1] == a[2]:
return 0
if a[0] == a[1]:
a[0]+=1;a[1]+=1;
if a[2] != a[1]:
a[2]-=1
elif a[1] == a[2]:
a[1]-=1;a[2]-=1
if a[0] != a[1]:
a[0]+=1;
else:
a[0]+=1;a[2]-=1
ans = abs(a[0]-a[1]) + abs(a[1]-a[2])+ abs(a[0]-a[2])
return ans
t = int(input())
for _ in range(t):
a = list((map(int,input().split())))
sol = solve(a)
print(sol)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define sza(x) ((int)x.size())
#define all(x) x.begin(), x.end()
#define revall(x) x.rbegin(), x.rend()
#define sortall(x) sort(all(x))
const int MAX_N = 2e5 + 5;
const int MAX_NN = 2e5 + 8;
const ll MOD = 1000000007;
const ll INF = 1e18+20;
#define revall(x) x.rbegin(), x.rend()
#define ALL(x) sort(x.begin(), x.end())
#define sortall(x) sort(all(x))
#define reverseall(x) reverse(all(x))
///////////////////////////////////////////////////////////////////////////////////////////////////
#define SCD(t) scanf("%d",&t)
#define SCLD(t) scanf("%ld",&t)
#define SCLLD(t) scanf("%lld",&t)
#define SCC(t) scanf("%c",&t)
#define SCS(t) scanf("%s",t)
#define SCF(t) scanf("%f",&t)
#define SCLF(t) scanf("%lf",&t)
#define MEM(a, b) memset(a, (b), sizeof(a))
#define FOR(i, j, k, in) for (ll i=j ; i<k ; i+=in)
#define RFOR(i, j, k, in) for (ll i=j ; i>=k ; i-=in)
#define rall(cont) cont.end(), cont.begin()
#define FOREACH(it, l) for (auto it = l.begin(); it != l.end(); it++)
#define IN(A, B, C) assert( B <= A && A <= C)
///////////////////////////////////////////////////////////////////////////////////////////////////
#define MP make_pair
#define INS insert
#define PB push_back
#define PF push_front
#define INF (int)1e9
#define EPS 1e-9
// #define MOD 998244353
#define ff first
#define ss second
#define PI 3.1415926535897932384626433832795
#define read(type) readInt<type>()
const double pi=acos(-1.0);
#define ll long long
typedef pair<int,int> PII;
typedef vector<long long> VI;
typedef vector<bool> VB;
typedef vector<char> VC;
typedef vector<char> VC;
typedef vector<vector<long long>> VII;
typedef vector<pair<ll,ll>>VPII;
typedef vector<string> VS;
typedef vector<PII> VIII;
typedef vector<VI> VVI;
// typedef vector<string> VS;
typedef map<ll,ll> MPII;
typedef map<char,int> MPCI;
typedef map<string,int> MPSI;
typedef set<long long> seti;
typedef multiset<int> MSETI;
typedef priority_queue<pair<int,int>> PQPII;
typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int uint64;
#define nl endl
/* clang-format off */
/* TYPES */
#define ll long long
#define pii pair<int, int>
#define pll pair<long long, long long>
#define vvi vector<vector<int>>
#define vll vector<long long>
#define vd vector<double>
#define mii map<long,long>
#define MPC map<char,int>
#define miid map<double,long>
#define si set<int>
#define sc set<char>
#define vi vector<int>
#define revs(x,y,z) for(ll i=x;i<=y;i+=z)
//////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* FUNCTIONS */
#define f1(i,s,e) for(long long int i=s;i<e;i++)
#define ff1(i,s,e) for(long long int i=s;i>=e;--i)
#define For1(i,n) (long long int i=0;i<n+1;++i)
#define cf(i,s,e) for(long long int i=s;i<=e;i++)
#define FO(i,s,e) for(long long int i=1;i*i<=y;i++)
#define rf(i,e,s) for(long long int i=e-1;i>=s;i--)
#define pass(a) for(long long int i=n-1;i>=1;i-=2)
#define pb push_back
#define ppb pop_back
#define eb emplace_back
//////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ----------------------</BITWISE>--------------------------
/* a=target variable, b=bit number to act upon 0-n */
#define BIT_SET(a,b) ((a) |= (1ULL<<(b)))
#define BIT_CLEAR(a,b) ((a) &= ~(1ULL<<(b)))
#define BIT_FLIP(a,b) ((a) ^= (1ULL<<(b)))
// '!!' to make sure this returns 0 or 1
#define BIT_CHECK(a,b) (!!((a) & (1ULL<<(b))))
#define BITMASK_SET(x, mask) ((x) |= (mask))
#define BITMASK_CLEAR(x, mask) ((x) &= (~(mask)))
#define BITMASK_FLIP(x, mask) ((x) ^= (mask))
#define BITMASK_CHECK_ALL(x, mask) (!(~(x) & (mask)))
#define BITMASK_CHECK_ANY(x, mask) ((x) & (mask))
#define LSB_ANY(n) (n&(n-1))
#define LSB_CHECK(n) (n&(-n))
// ----------------------</BITWISE END>--------------------------
/****************** Prime Generator **********************/
// const int N=1e7+10; int prime[20000010];
// bool isprime[N]; int nprime;
// template <typename T> void Sieve(T a)
// {nprime = 0;memset(isprime,true,sizeof(isprime));
// isprime[1]=false;for(int i=2;i<N;i++){
// if(isprime[i]){prime[nprime++]=i;for(int j=2;i*j<N;j++)
// isprime[i*j]=false;}}}
// template <typename T> inline T PrimeFactors(T n)
// {ll cnt=0,sum=1;for(int i=0; prime[i]*prime[i]<=n
// and i<nprime;i++){cnt=0;while(n%prime[i]==0)
// {cnt++;n/=prime[i];}sum*=(cnt+1);}
// if(n>1)sum*=2;return sum;}
/**************** Prime Generator End ********************/
/****************** Geometry *****************/
template <typename T> inline T PointDistanceHorVer(T x1,T y1,T x2, T y2)
{return abs(x1-x2)+abs(y1-y2);}
template <typename T> inline T PointDistanceDiagonally(T x1,T y1,T x2, T y2)
{return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));}
template <typename T> inline T PointDistanceMinimum(T x1,T y1,T x2, T y2)
{ T tmp1=abs(x1-x2); T tmp2=abs(y1-y2); T tmp3=abs(tmp1-tmp2);
T tmp4=min(tmp1, tmp2); return tmp3+tmp4; }
template <typename T> inline T PointDistance3D(T x1,T y1,T z1,T x2,T y2,T z2)
{return sqrt(square(x2-x1)+square(y2-y1)+square(z2-z1));}
template <typename T> inline T Cube(T a){return a*a*a;}
template <typename T> inline T RectengularPrism(T a,T b,T c)
{return a*b*c;}
template <typename T> inline T Pyramid(T base, T height)
{return (1/3)*base*height;}
template <typename T> inline T Ellipsoid(T r1,T r2,T r3)
{return (4/3)*PI*r1*r2*r3;}
template <typename T> inline T IrregualarPrism(T base, T height)
{return base*height;}
template <typename T> inline T Sphere(T radius)
{ return (4/3)*PI*radius*radius*radius;}
template <typename T> inline T CylinderB(T base, T height)
{return base*height;} // base and height
template <typename T> inline T CylinderR(T radius, T height)
{return PI*radius*radius*height;} // radius and height
template <typename T> inline T Cone (T radius,T base, T height)
{return (1/3)*PI*radius*radius*height;}
/****************** Geometry end *****************/
/******* Debugging Class Template *******/
#define debug(args...) (Debugger()) , args
class Debugger
{
public:
Debugger(const std::string& _separator = " - ") :
first(true), separator(_separator){}
template<typename ObjectType> Debugger& operator , (const ObjectType& v)
{
if(!first)
std:cerr << separator;
std::cerr << v;
first = false;
return *this;
}
~Debugger() { std:cerr << endl;}
private:
bool first;
std::string separator;
};
//////////////////////////////////////////////////////////////////////////////////////////////////////
/* PRINTS */
template <class T>
void print_v(vector<T> &v) { cout << "{"; for (auto x : v) cout << x << ","; cout << "\b}"; }
/* UTILS */
ll min(ll a,int b) { if (a<b) return a; return b; }
ll min(int a,ll b) { if (a<b) return a; return b; }
ll max(ll a,int b) { if (a>b) return a; return b; }
ll max(int a,ll b) { if (a>b) return a; return b; }
ll gcd(ll a,ll b) { if (b==0) return a; return gcd(b, a%b); }
ll lcm(ll a,ll b) { return a/gcd(a,b)*b; }
string to_upper(string a) { for (int i=0;i<(int)a.size();++i) if (a[i]>='a' and a[i]<='z') a[i]-='a'-'A'; return a; }
string to_lower(string a) { for (int i=0;i<(int)a.size();++i) if (a[i]>='A' and a[i]<='Z') a[i]+='a'-'A'; return a; }
void yes() { cout<<"YES\n"; }
void no() { cout<<"NO\n"; }
bool isSorted(vi &arr){for(int i=0;i<(int)arr.size()-1;i++) if(arr[i] >= arr[i+1]) return false;return true;}
/* All Required define Pre-Processors and typedef Constants */
typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int uint64;
bool isprime(ll n)
{
ll x=sqrt(n);
for(int i=2;i<=x;i++)
{if(n%i==0)return true;}
return false;
}
bool cmp(pair<int,int>x,pair<int,int>y){
return x.second<y.second;
}
void two_D_PrifixSum()
{
//prefix sum in 2 D array
int n,m;cin>>n>>m;
int a[n][m],prefix[n][m];
f1(i,0,n)
{
f1(j,0,m)
{
cin>>a[i][j];
}
}
//create a prefix array
f1(i,0,n)
{
f1(j,0,m)
{
prefix[i][j]=a[i][j];
if(i-1>=0)prefix[i][j]+=prefix[i-1][j];
if(j-1>=0)prefix[i][j]+=prefix[i][j-1];
if(i-1>=0 and j-1>=0)
{
prefix[i][j]-=prefix[i-1][j-1];
}
}
}
int q;cin>>q;
while(q--)
{
int i1,i2,j1,j2;cin>>i1>>i2>>j1>>j2;
}
}
//Scanline algorithm
void scanlineAlgoritm()
{
int n;cin>>n;
int a[n];
f1(i,0,n)cin>>a[i];
int prefixSum[n+1];
int q;cin>>q;
while(q--)
{
int l,r,x;cin>>l>>r>>x;
prefixSum[l]+=x;
prefixSum[r+1]-=x;
}
int s=0;
f1(i,0,n)
{
s+=prefixSum[i];
a[i]+=s;
}
f1(i,0,n)
{
cout<<a[i]<<" ";
}
}
int findMin(vector<bool>&vis,VI distance)
{
int start=-1;
int n=vis.size();
f1(i,0,n)
{
if(start==-1 or distance[start]>distance[i])
start=i;
}
return start;
}
int dist(VPII vis,int n)
{
vector<bool>ar(n,false);
VI temp(n,INF);
ar[1]=0;
int val=findMin(ar,temp);
if(val==-1)return 0;
ar[val]=true;
cf(i,0,n)
{
return temp[n];
}
}
bool binarySearch(ll mid,ll k,ll x)
{
ll tot=0;
mid-=1;
if(mid<=k)
tot=(mid*(mid+1))/2;
else
{
tot=(k*(k+1))/2;
mid=2*k-1-mid;
tot+=((k*(k-1))/2-(mid*(mid+1))/2);
}
return tot<x;
}
vi helper(int n)
{
vi v;
for (int i = 1; i <=sqrt(n); i++)
{
if (n % i == 0) {
if (n / i == i)
{
v.push_back(i);
}else
{
v.push_back(n/i);
}
}
}
return v;
}
ll dmod(ll x)
{
return ((x+1000000007)%1000000007);
}
ll take(ll x,ll y)
{
ll ans=1;
while(y)
{
if(y&1)ans=dmod(ans*x);
y/=2;
// x=dmod(sqrt(x));
x=dmod(x*x);
}
return ans;
}
ll help( long long x )
{
ll sum = 0 ;
while ( x )
{
sum += x % 10 ;
x /= 10 ;
}
return sum ;
}
bool c2(pair<string,pair<int,int>> &x,pair<string,pair<int,int>>&y)
{
if(x.second.first!=y.second.first)
return (x.second.first < y.second.first);
else
return (x.second.second < y.second.second);
}
bool c1(pair<string,pair<int,int>> &x,pair<string,pair<int,int>>&y)
{
if(x.first!=y.first)
return (x.first < y.first);
else
return (x.second.second < y.second.second);
}
bool isPrime(int n)
{
// Corner case
if (n <= 1)
return false;
for (int i = 2; i < n; i++)
if (n % i == 0)
return false;
return true;
}
int ft(char c)
{
return c - 'a';
}
char fr(int i)
{
return i+'a';
}
ll fact(int n)
{
ll ans=1;
for(ll i=1;i<=n;i++)
{
ans*=i;
}
return ans;
}
set<ll>getFactors(ll x)
{
set<ll>st;
ll sq=sqrt(x);
f1(i,2,sq+1)
{
if(x%i==0)
{
st.insert(i);
st.insert(x/i);
}
}
return st;
}
ll Prime(ll x)
{
ll sq=sqrt(x);
f1(i,2,sq+1)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
void solve()
{
vi a(3);
cin>>a[0]>>a[1]>>a[2];
sort(all(a));
if(a[2]-a[0]<=1)
{
cout<<0<<nl;
return;
}
else
{
cout<<2*(a[2]-a[0]-2)<<nl;
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
// std::cout << std::setprecision(15); std::cout << std::fixed;
// #ifndef ONLINE_JUDGE
// freopen("input.txt","r",stdin); //file input.txt is opened in reading mode i.e "r"
// freopen("output.txt","w",stdout); //file output.txt is opened in writing mode i.e "w"
// #endif
ll tc = 1;
cin >> tc;
for (ll t = 1; t <= tc; t++) {
// //cout << "Case #" << t << ": ";
// Solution s;
// if(s.solve())
// {
// // cout<<"Yes"<<nl;
// }
// else
// {
// // cout<<"No"<<nl;
// }
// // }
solve();
}
return 0;
}
1302. Deepest Leaves Sum | 1209. Remove All Adjacent Duplicates in String II |
994. Rotting Oranges | 983. Minimum Cost For Tickets |
973. K Closest Points to Origin | 969. Pancake Sorting |
967. Numbers With Same Consecutive Differences | 957. Prison Cells After N Days |
946. Validate Stack Sequences | 921. Minimum Add to Make Parentheses Valid |
881. Boats to Save People | 497. Random Point in Non-overlapping Rectangles |
528. Random Pick with Weight | 470. Implement Rand10() Using Rand7() |
866. Prime Palindrome | 1516A - Tit for Tat |
622. Design Circular Queue | 814. Binary Tree Pruning |
791. Custom Sort String | 787. Cheapest Flights Within K Stops |
779. K-th Symbol in Grammar | 701. Insert into a Binary Search Tree |
429. N-ary Tree Level Order Traversal | 739. Daily Temperatures |
647. Palindromic Substrings | 583. Delete Operation for Two Strings |
518. Coin Change 2 | 516. Longest Palindromic Subsequence |
468. Validate IP Address | 450. Delete Node in a BST |