Not able to figure out the mistake in Travelling salesman problem

int dp[1050][105];

int TSP(int mask,int pos,int vis,vector<vector<int>>cost)
{
    if(mask==vis)
    {
        return cost[pos][0];
    }
    
    if(dp[mask][pos]!=-1)
    return dp[mask][pos];
    
    int ans = INT_MAX;
    for(int city=0;city<cost.size();city++){
        if(mask & (1<<city)==0)
        {
            int newans = cost[pos][city] + TSP(mask|(1<<city),city,vis,cost);
            ans = min(ans,newans);
        }
    }
    
    return dp[mask][pos] = ans;
}

int total_cost(vector<vector<int>>cost){
    // Code here
    int n = cost.size();
    int vis = (1<<n) - 1;
    
    for(int i=0;i=(i<<1);i++)
    {
        for(int j=0;j<n;j++)
        {
            dp[i][j] = -1;
        }
    }
    
    return TSP(1,0,vis,cost);
}
};