ScreenToWorldPoint not working

Hi, so im getting this error and i don’t know why please help!

Assets/Script/BuildingPlacement.cs(23,23): error CS1061: Type UnityEngine.Component' does not contain a definition for ScreenToWorldPoint’ and no extension method ScreenToWorldPoint' of type UnityEngine.Component’ could be found. Are you missing an assembly reference?

private PlaceableBuilding placealeBuilding;
private Transform currentBuilding;
private bool hasPlaced;

// Use this for initialization
void Start () {
	
}

// Update is called once per frame
void Update () 
{
	if (currentBuilding != null && !hasPlaced) 
	{
		Vector3 m = Input.mousePosition;
		m = new Vector3 (m.x, m.y, transform.position.y);
		Vector3 p = camera.ScreenToWorldPoint(m);
		currentBuilding.position = new Vector3 (p.x,0,p.z);

		if (Input.GetMouseButtonDown (0)) 
		{
			if (IsLegalPosition ()) {
				hasPlaced = true;
			}
		}
	}
}

bool IsLegalPosition()
{
	if (placealeBuilding.colliders.Count > 0) 
	{
		return false;
	}
	return true;
}

public void SetItem(GameObject b)
{
	hasPlaced = false;
	currentBuilding = ((GameObject)Instantiate (b)).transform;
	placealeBuilding = currentBuilding.GetComponent<PlaceableBuilding> ();
}

}

Problem Solved, i changed
Vector3 p = camera.ScreenToWorldPoint(m);
to
Vector3 p = camera.main.ScreenToWorldPoint(m);